Я настроил следующий блок:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<executions>
<execution>
<id>${project.name}-test-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<finalName>${project.name}-test</finalName>
<filters>
<filter>src/assemble/test/distribution.properties</filter>
</filters>
<descriptors>
<descriptor>src/assemble/distribution.xml</descriptor>
</descriptors>
<attach>true</attach>
</configuration>
</execution>
<execution>
<id>${project.name}-prod-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<finalName>${project.name}-prod</finalName>
<filters>
<filter>src/assemble/prod/distribution.properties</filter>
</filters>
<descriptors>
<descriptor>src/assemble/distribution.xml</descriptor>
</descriptors>
<attach>true</attach>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Это произвело два zip-файла:
Мое ожидание свойства attach=true, что эти два zip-файла установлены с именем, как дали в свойстве finalName. Но результат, только один файл установлен (присоединенный) к артефакту. Протокол знатока:
Плагин использует идентификатор артефакта вместо свойства finalName! Действительно ли это - ошибка?
Последняя установка перезаписывает первый. Что я могу сделать для установки этого два файла с различными именами?
Спасибо за Ваше расследование. Roland
Последняя установка перезаписывает первую.Что я могу сделать, чтобы установить эти два файла с разными именами?
Как и ожидалось (я не знаю, ошибка это или нет, но так работает подключаемый модуль сборки). Чтобы избежать этого, вам необходимо установить для свойств appendAssemblyId
значение true
и, чтобы получить эквивалентный результат, изменить finalName
на $ { project.name}
и сборка id
для test
и prod
(то есть для использования двух дескрипторов сборки). Примерно так:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<executions>
<execution>
<id>${project.name}-test-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>true</appendAssemblyId>
<finalName>${project.name}</finalName>
<filters>
<filter>src/assemble/test/distribution.properties</filter>
</filters>
<descriptors>
<descriptor>src/assemble/distribution-test.xml</descriptor>
</descriptors>
</configuration>
</execution>
<execution>
<id>${project.name}-prod-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>true</appendAssemblyId>
<finalName>${project.name}</finalName>
<filters>
<filter>src/assemble/prod/distribution.properties</filter>
</filters>
<descriptors>
<descriptor>src/assemble/distribution-prod.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Где distribution-test.xml
и distribution-prod.xml
объявляют сборку id
test
и prod
соответственно.