繁体   English   中英

如何在Maven中组装多模块项目

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM