Maven-在多模块项目中使用汇编插件创建分发文件

Maven-在多模块项目中使用汇编插件创建分发文件,maven,packaging,maven-assembly-plugin,Maven,Packaging,Maven Assembly Plugin,我正在使用Maven构建一个多模块项目 由9个作战模块组成 每个模块都有自己的POM,其中包含如何打包的说明 <packaging>war</packaging> 战争 然后,父POM负责在每个模块上启动Maven生命周期,并将其推给工件管理器(Nexus) 模块1 模块2。。。。 我想使用汇编插件将每个模块先前构建的每个WAR文件打包成一个ZIP文件。我试图通过在父POM中定义一个程序集描述符来实现这一点,该描述符为每个模块定义一个单独的依赖项集(使用gro

我正在使用Maven构建一个多模块项目

  • 由9个作战模块组成
每个模块都有自己的POM,其中包含如何打包的说明

<packaging>war</packaging>
战争
然后,父POM负责在每个模块上启动Maven生命周期,并将其推给工件管理器(Nexus)


模块1
模块2。。。。
我想使用汇编插件将每个模块先前构建的每个WAR文件打包成一个ZIP文件。我试图通过在父POM中定义一个程序集描述符来实现这一点,该描述符为每个模块定义一个单独的依赖项集(使用groupID、artifactID和version在本地repo中查找WAR)

我已经尝试使用以下程序集文件来实现这一点

<assembly>
  <id>war</id>
  <includeBaseDirectory>false</includeBaseDirectory>
  <formats>
    <format>zip</format>
  </formats>
  <dependencySets>
    <dependencySet>
      <useProjectArtifact>false</useProjectArtifact>
      <includes>
         <include>com:test-web:war:${pom.version}</include>
      </includes>
      <outputFileNameMapping>test-web.war</outputFileNameMapping>
    </dependencySet>
  </dependencySets>
</assembly>

战争
假的
拉链
假的
com:testweb:war:${pom.version}
test-web.war
这是我父母POM中的插件配置

<plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.5.3</version>
                    <executions>
                        <execution>
                            <id>distribution-package</id>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                            <configuration>
                                <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                                <descriptors>
                                    <descriptor>assembly.xml</descriptor>
                                </descriptors>
                                <formats>
                                    <format>zip</format>
                                </formats>
                                <includeBaseDirectory>false</includeBaseDirectory>
                            </configuration>
                      </execution>
                    </executions>
                </plugin>

maven汇编插件
2.5.3
分发包
包裹
单一的
真的
assembly.xml
拉链
假的
这种方法正确吗? 另外,从我的本地回购中提取战争文件有意义吗?我应该在每个子模块目标文件夹中使用输出吗?

1)在您的父pom中,我想

<modules>
<module>module1</module>
<module>distibution</module>
<module>module2....

模块1
分布
模块2。。。。
(为发行版创建一个额外模块)以将父pom与发行版分离

2) 您不应该在每个子模块目标文件夹中使用输出。将所有WAR添加为分发的依赖项。这样maven就可以知道它必须最后构建发行版

3) 提示:将${pom.version}替换为${project.version}(我认为如果前者有效的话,就不推荐使用)

<modules>
<module>module1</module>
<module>distibution</module>
<module>module2....