Подтвердить что ты не робот

Плагин сборки maven не использует 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. Но в результате только один файл установлен (прикреплен) к артефакту. Протокол maven:

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

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

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

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

4b9b3361

Ответ 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 соответственно.