java - 多模块 Maven 项目设计注意事项

标签 java maven build

我正在寻找创建一个网络项目,

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

  • m1
  • m2
  • m3
  • m4
  • m5

我的 Web 项目是 Maven 项目,因此我了解了多模块项目。

我的问题是

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

    • 即根据我想要交付的模块创建两个不同的可交付成果
  2. 他们是否有关于我设计 m1、m2 ... m5 时需要了解的注意事项的引用

  3. 如何为此类项目模块设置构建过程

最佳答案

根据您的请求,您应该创建如下项目的结构:

+-- 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中一样做到最好。使用接口(interface)来解耦模块等。并根据一般意图/功能分离模块,例如:

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

等等。如果没有任何真正的关系,一般很难回答这个问题,举个例子可能会有所帮助。 对于你的第三个问题,我可以建议阅读Maven Complete Reference等等,不要忘记关于 maven 等的网站。

关于java - 多模块 Maven 项目设计注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20399075/

相关文章:

java - 让给定范围的位更有效?

java - 无法执行目标(GWT Maven 插件)

javascript - 如何将 Angular 8 项目构建为 .war 文件

gradle - 谷歌构建Android的Gradle插件源代码

angular - 当我使用 ng build 时,proxy.config.json 在 Angular 4/5 中不起作用

java - 如何计算快速排序中的比较和交换?

java - 将对象添加到 ArrayList 时遇到问题

java - 将多个过滤器应用于 Java 中的 map

java - maven 进程资源不会替换 Linux 上属性文件中的占位符

gradle:禁止在多项目应用程序的根目录创建构建文件夹