我正在使用Maven构建一个多模块项目;
- 包含9个战争模块
每个模块都有自己的POM,包含如何打包的指令;
<packaging>war</packaging>
父POM负责在每个模块上初始化Maven生命周期,并将其推送到工件管理器(Nexus)
<modules>
<module>module1</module>
<module>module2....
我想使用汇编插件将每个模块早先构建的每个WAR文件打包成单个ZIP文件。我试图通过在父POM中定义一个汇编描述符来做到这一点,父POM为每个模块定义了一个单独的dependencySet(使用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>
这是我的父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>
这个方法是正确的吗?另外,从我的本地仓库中提取WAR文件是否有意义?我应该在每个子模块目标文件夹中使用输出吗?
1)在你的父诗中,我会这样写
<modules>
<module>module1</module>
<module>distibution</module>
<module>module2....
(为发行版创建一个额外的模块)为了将父版本从发行版中分离出来。
2)您不应该在每个子模块目标文件夹中使用输出。将所有war添加为发行版的依赖项。通过这种方式,maven可以知道它必须最后构建发行版。
3)提示:替换${pom。版本}与${项目。