我正在使用maven和eclipse IDE开发Java项目。
我有3个项目,即P1,P2和主项目
我有P1,P2,主项目的个人poms,我已将P1,P2作为主项目的模块包含,而主项目仅接受包装为pom
如果我将包装更改为战争,我会收到以下错误
项目构建错误:值为“war”的“打包”无效。聚合器项目需要'pom'作为包装。
我想在生成的战争中建立一个由P1,P2和主项目类文件组成的战争。
任何人都可以提供任何指示来实现相同的
先谢谢
答案 0 :(得分:3)
您无法混合包装类型(pom
和war
)。你需要引入第四个POM:
<project>
<groupId>org.example</groupId>
<artifactId>modules</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>P1</module>
<module>P2</module>
<module>Main</module> <!-- This contains your WAR -->
</modules>
...
</project>
您的项目Main
取决于P1
和P2
。 Maven / Eclipse将为您找出构建顺序。如果你不想,你甚至不需要在Eclipse中导入module
工件,但你可能需要至少安装一次顶级POM。
如果您愿意,您也可以将常用配置放在上面的POM中,让子模块继承它。
答案 1 :(得分:1)
Packaging POM用于模块的聚合,它们的公共依赖关系(通过Dependency Management部分)或插件(通过插件管理部分)等。
在您的情况下,您必须从&#34;主项目&#34;移动来源。将POM打包到另一个模块,例如:P0
。然后你应该在这个P0
模块上有一个打包WAR。此外,P0模块可以依赖于P1
和P2
模块。
你可能有这样的项目结构:
Main Project
- 使用模块打包POM:P0
,P1
,P2
P0
- 使用来自主项目的来源打包WAR,具体取决于:P1
,P2
P1
- 打包JAR P2
- 打包JAR 使用mvn package
构建主项目时,/target
模块的P0
目录中将有一个WAR文件。