我正在尝试制作一个多模块项目。我有一个用于JAR的模块,包含模型,控制器和服务类,以及另一个用于WAR的模块。我已设法构建项目并生成结果,但我不确定我的文件夹的结构。
目前我在同一个项目中制作了一个Maven模块。
文件夹是:
Parent
Module1
Module2
他们都处于同一水平,这是正确的吗?或者Module1和Module2应该在Parent文件夹中?是否有可能(或将自动发生)使生成的目标出现在父文件夹而不是每个模块中?或者也许没有必要。
我正在使用IntelliJ 11 IDEA。
http://www.sonatype.com/books/mvnex-book/reference/multimodule-sect-intro.html
答案 0 :(得分:4)
通常人们将模块置于父级(逻辑上和目录结构中)。但这不是法律。这只是一个建议。 现在您必须创建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>
答案 1 :(得分:0)
您可以将所有模块和父项放在同一层次结构中。 我找到的一个好方法是为父级提供一个文件夹,它将有一个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