Плагин блока знатока не использует finalName для установки с attach=true?

Я настроил следующий блок:

<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-файла:

  • distribution-prod.zip
  • distribution-test.zip

Мое ожидание свойства attach=true, что эти два zip-файла установлены с именем, как дали в свойстве finalName. Но результат, только один файл установлен (присоединенный) к артефакту. Протокол знатока:

  • distrib-0.1-SNAPSHOT.zip
  • distrib-0.1-SNAPSHOT.zip

Плагин использует идентификатор артефакта вместо свойства finalName! Действительно ли это - ошибка?

Последняя установка перезаписывает первый. Что я могу сделать для установки этого два файла с различными именами?

Спасибо за Ваше расследование. Roland

17
задан Tarlog 7 September 2011 в 11:24
поделиться

1 ответ

Последняя установка перезаписывает первую.Что я могу сделать, чтобы установить эти два файла с разными именами?

Как и ожидалось (я не знаю, ошибка это или нет, но так работает подключаемый модуль сборки). Чтобы избежать этого, вам необходимо установить для свойств 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 соответственно.

19
ответ дан 30 November 2019 в 13:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: