Объединить файлы свойств со сборкой Maven - PullRequest
10 голосов
/ 08 апреля 2011

У меня проблема с плагином сборки maven.

У меня есть проект maven, в котором используется несколько jar-файлов.Каждая банка содержит файлы конфигурации.В другом проекте я использую подключаемый модуль maven для сборки всех конфигураций в уникальный jar.

Все работает нормально, но, к сожалению, два файла имеют одинаковое имя, а второй перезаписывает первый.

Надеюсьне удается сказать maven объединить два файла вместо перезаписи.

Кто-то знает, как это сделать?

Спасибо.

Ответы [ 4 ]

8 голосов
/ 01 июня 2011

maven-shade-plugin в сочетании с AppendingTransformer должен делать то, что вы хотите.

Мы используем его для объединения файлов свойств из двух zip-проектов, определенных как отдельные модули maven, в один zip-файл.Это создает расширенный набор файлов и каталогов из двух модулей и объединяет указанный файл свойств.Мы также определяем модуль для слияния как зависимость модуля maven, выполняющего слияние.

Что-то вроде этого должно сработать:

<plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>1.4</version>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
        <goal>shade</goal>
          </goals>
          <configuration>
        <filters>
          <filter>
            <artifact>groupname:artifactname</artifact>
            <includes>
              <include>**/*</include>
            </includes>
          </filter>
        </filters>
        <transformers>
          <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
            <resource>propertyfiletomerge.properties</resource>
          </transformer>
        </transformers>
          </configuration>
        </execution>
      </executions>
    </plugin>
5 голосов
/ 08 апреля 2011

Это не совсем то, что вы ищете, но я бы использовал плагин http://maven.apache.org/plugins/maven-antrun-plugin/ для запуска задачи ant concat http://ant.apache.org/manual/Tasks/concat.html для объединения файлов.Я бы запустил maven-antrun в prepare-package phase.

1 голос
/ 04 августа 2017

Исходя из ответа Скараба, вот код, который я использовал для решения этой проблемы с помощью maven-antrun-plugin :

<project>
...
<build>
    ...
    <plugins>
        ...
        <plugin> 
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.8</version>
            <executions>
                <execution>
                <phase>prepare-package</phase>
                <configuration>

                    <target>
                        <concat destfile="${project.build.directory}/setup_db.sql">
                            <fileset file="${project.basedir}/src/main/resources/db/sql_one/*.sql" />
                            <fileset file="${project.basedir}/src/main/resources/db/sql_another/*.sql" />
                        </concat>
                    </target>

                </configuration>
                <goals>
                    <goal>run</goal>
                </goals>
              </execution>
            </executions>
        </plugin>
        ... 
    </plugins>
</build>

0 голосов
/ 08 апреля 2011

Вы можете попытаться переименовать первый файл и объединить два файла после этого.

Вот Поток на стеке потока, в котором задокументировано переименование такого файла: Переименование ресурсов в Maven

...