Maven构建依赖项目

时间:2016-03-27 07:39:17

标签: java eclipse maven

我正在使用maven和eclipse IDE开发Java项目。

我有3个项目,即P1,P2和主项目

我有P1,P2,主项目的个人poms,我已将P1,P2作为主项目的模块包含,而主项目仅接受包装为pom

如果我将包装更改为战争,我会收到以下错误

  

项目构建错误:值为“war”的“打包”无效。聚合器项目需要'pom'作为包装。

我想在生成的战争中建立一个由P1,P2和主项目类文件组成的战争。

任何人都可以提供任何指示来实现相同的

先谢谢

2 个答案:

答案 0 :(得分:3)

您无法混合包装类型(pomwar)。你需要引入第四个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取决于P1P2。 Maven / Eclipse将为您找出构建顺序。如果你不想,你甚至不需要在Eclipse中导入module工件,但你可能需要至少安装一次顶级POM。

如果您愿意,您也可以将常用配置放在上面的POM中,让子模块继承它。

答案 1 :(得分:1)

Packaging POM用于模块的聚合,它们的公共依赖关系(通过Dependency Management部分)或插件(通过插件管理部分)等。

在您的情况下,您必须从&#34;主项目&#34;移动来源。将POM打包到另一个模块,例如:P0。然后你应该在这个P0模块上有一个打包WAR。此外,P0模块可以依赖于P1P2模块。

你可能有这样的项目结构:

  • Main Project - 使用模块打包POM:P0P1P2
    • P0 - 使用来自主项目的来源打包WAR,具体取决于:P1P2
    • P1 - 打包JAR
    • P2 - 打包JAR

使用mvn package构建主项目时,/target模块的P0目录中将有一个WAR文件。