[英]How to assemble a multi module project in Maven
我正在尝试制作一个多模块项目。 我有一个用于JAR的模块,包含模型,控制器和服务类,以及另一个用于WAR的模块。 我已设法构建项目并生成结果,但我不确定我的文件夹的结构。
目前我在同一个项目中制作了一个Maven模块。
文件夹是:
Parent
Module1
Module2
他们都处于同一水平,这是正确的吗? 或者Module1和Module2应该在Parent文件夹中? 是否有可能(或将自动发生)使生成的目标出现在父文件夹而不是每个模块中? 或者也许没有必要。
我正在使用IntelliJ 11 IDEA。
http://www.sonatype.com/books/mvnex-book/reference/multimodule-sect-intro.html
通常人们将模块置于父级(逻辑上和目录结构中)。 但这不是法律。 这只是一个建议。 现在你必须创建4个pom.xml文件:一个在顶层,一个在每个项目(parent,module1和module2)。 顶级pom应该提到它的所有3个子项目:
<modules>
<module>parent</module>
<module>module1</module>
<module>module2</module>
</modules>
如果module1和2依赖于父级(处于同一级别),只需说:
<dependencies>
<dependency>
<groupId>com.yourcompany.yourproject</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependencies>
您可以将所有模块和父项放在同一层次结构中。 我找到的一个好方法是为父级提供一个文件夹,它将有一个pom。 在那个pom中,您需要定义子模块:
<modules>
<module>shared</module>
<module>common</module>
<module>dal</module>
<module>logic</module>
</modules>
如果所有模块位于同一文件夹层次结构中,那么您需要执行以下操作:
<module>../shared</module>
在子模块中,您需要设置父版本:
<parent>
<artifactId>Aggregation</artifactId>
<groupId>com.mycomm</groupId>
<version>3.0.2-SNAPSHOT</version>
</parent>
要在同一项目中的每个模块之间具有依赖关系:
<dependency>
<groupId>com.mycomm</groupId>
<artifactId>shared</artifactId>
<version>${project.version}</version>
</dependency>
如果更改父pom,则还需要更改父pom的所有子模块。 您可以使用mvn-release-plugin示例:
mvn release:update-versions -DautoVersionSubmodules=true -DdevelopmentVersion=1.0.0.2-SNAPSHOT
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.