2016-03-27 290 views
2

我正在使用maven和eclipse IDE开发Java项目。用依赖项目构建Maven

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

我对P1,P2,主项目个体POMS,我已经包括P1,P2作为主项目和项目主要模块是接受包装如POM只有

如果我改变包装战,我得到以下错误

Project build error: 'packaging' with value 'war' is invalid. Aggregator projects require 'pom' as packaging.

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

谁能给任何指针来达到同样的

由于提前

回答

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

包装POM用于模块的聚集,他们共同的依赖(通过依赖管理部分)或插件(插件通过管理处)等

你的情况,你必须从移动源“主项目“,将POM包装到另一个模块,例如:P0。然后,您应该在此P0模块上打包WAR。另外,P0模块可以取决于P1P2模块。

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

  • Main Project - 包装POM与模块:P0P1P2
    • P0 - 包装WAR与主项目的来源,依赖于:P1P2
    • P1 - 包装JAR
    • P2 - 包装JAR

当你与mvn package构建主项目,你将有一个WAR文件中/target目录P0模块。

相关问题