多模块Maven项目设计考虑因素

时间:2013-12-05 11:42:04

标签: java maven build

我希望创建一个Web项目,

这个网络项目将有几个模块

  
      
  • M1
  •   
  • 平方米
  •   
  • 立方米
  •   
  • M4
  •   
  • M5
  •   

我的网络项目是maven项目,所以我读到了关于多模块项目的信息。

我的问题是

  1. 我可以将我的网络项目打包成单独的战争,以便P1包含{m1,m2,m3},而P2包含{m1,m4,m5}

    • 即。根据我想要提供的模块创建两个不同的可交付成果
  2. 他们是否有任何关于设计m1,m2 ... m5

  3. 需要了解的注意事项的参考资料
  4. 如何为此类项目模块设置构建过程

1 个答案:

答案 0 :(得分:1)

对于您的请求,您应该创建项目的结构,如下所示:

+-- root (pom.xml)
     +-- m1 (pom.xml)
     +-- m2 (pom.xml)
     +-- m3 (pom.xml)
     +-- m4 (pom.xml)
     +-- m5 (pom.xml)
     +-- P1 (pom.xml)
     +-- P2 (pom.xml)

并且在P1中,您只需将依赖项提供给您希望打包到此模块中的模块,如下所示:

<dependencies>
  <dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>module-one</artifactId>
    <version>${project.version}</version>
  </dependency>
  <dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>module-two</artifactId>
    <version>${project.version}</version>
  </dependency>
  <dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>module-three</artifactId>
    <version>${project.version}</version>
  </dependency>
  ...
</dependencies>

如果您希望P2中具有不同的依赖关系,只需在P2中提供其他依赖关系即可。 根据你的第二个问题,我只能说就像在java中一样做得最好。使用接口来解耦模块等。并根据一般意图/功能分离模块,如:

   +-- core
   +-- base
   +-- web1
   +-- api

等。一般来说很难回答这个问题,如果没有任何实际意义可能会给出一个例子可能有所帮助。 对于你的第三个问题,我可以推荐阅读Maven Complete Reference等,不要忘记关于maven等的网站。