maven程序集插件没有使用finalName来安装attach = true?

时间:2010-05-02 13:07:33

标签: maven-2 maven-assembly-plugin

我已经配置了以下程序集:

<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-id而不是属性finalName! 这是一个错误吗?

最后一次安装会覆盖第一次安装。 如何使用不同的名称安装这两个文件?

感谢您的调查。 罗兰

1 个答案:

答案 0 :(得分:19)

  

最后一次安装会覆盖第一次安装。如何使用不同的名称安装这两个文件?

正如预期的那样(我不知道这是不是一个bug,但这就是程序集插件的工作方式)。为避免这种情况,您必须将appendAssemblyId属性设置为true,并获得等效结果,将finalName更改为${project.name}和组合{{1到idtest(即使用两个程序集描述符)。像这样:

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 idtest