Maven:如何处理包含模块的模块?
Maven: How to deal with modules that contain modules?
以前我曾处理过由两个层次结构组成的多模块 Maven 项目。父 POM 后跟模块在它们自己的目录和 POM 中。
但现在我接管了一个包含父项的项目,然后是包含模块的模块。
这一切都是根据 Maven 指南还是我在处理定制的东西?
我该如何解释这些子模块?知道可以指点我的指南吗?
我可以 运行 所有 Maven 生命周期成功。虽然我不确定是否以及如何重构应用程序并开始插入我自己的代码。
这是我的项目结构树,只剩下几个模块:
top-parent
| pom.xml (modules: applications, checks, core, test)
|
+---applications
| | pom.xml (parent: top-parent) (modules: batch, surefire, web)
| <parent>
| <artifactId>applications</artifactId>
| <groupId>com.a.b.codechecker</groupId>
| <version>1.0</version>
| </parent>
| <artifactId>batch</artifactId>
|
| |
| \---web
| | pom.xml
| <parent>
| <groupId>com.a.b.codechecker</groupId>
| <artifactId>applications</artifactId>
| <version>1.0</version>
| </parent>
| <artifactId>web</artifactId>
|
+---checks
| | pom.xml (parent: top parent) (modules: aggregator, blacklist-check)
| <parent>
| <groupId>com.a.b.codechecker</groupId>
| <artifactId>parent</artifactId>
| <version>1.0</version>
| </parent>
| <groupId>com.a.b.codechecker.checks</groupId>
| <artifactId>checks</artifactId>
| |
| +---aggregator
| | pom.xml
<parent>
<artifactId>checks</artifactId>
<groupId>com.a.b.codechecker.checks</groupId>
<version>1.0</version>
</parent>
<artifactId>aggregator</artifactId>
我提供以下几个大纲。
根据问题,
这一切都是根据 Maven 指南还是我在处理定制的东西?
是的,你可以有 Parent, Child, Grand child type module structure.Parent and Child type maven multi module hierarchy 很简单,但在某些情况下,开发人员设计在一个模块内有几个子模块。如果你有一个包含 n 个模块和 m 个子模块的大型项目,对于不同级别的开发人员来说,它会变得很复杂。
根据这个问题,
以及如何解释这些子模块?知道可以指点我的指南吗?
为简单起见,如何管理取决于开发团队。我会建议,如果你有很多子模块,你可以 create/maintain 另一个独立项目,你可以在需要的地方将依赖项添加到主项目中。它将为您提供该项目的粒度和单独的团队工作,而不考虑主项目。
在大型项目的情况下,始终建议维护独立的项目,您可以在其他项目中添加依赖。为此,您可以使用 Nexus 或 Artifactory 进行工件管理。
以前我曾处理过由两个层次结构组成的多模块 Maven 项目。父 POM 后跟模块在它们自己的目录和 POM 中。
但现在我接管了一个包含父项的项目,然后是包含模块的模块。
这一切都是根据 Maven 指南还是我在处理定制的东西?
我该如何解释这些子模块?知道可以指点我的指南吗?
我可以 运行 所有 Maven 生命周期成功。虽然我不确定是否以及如何重构应用程序并开始插入我自己的代码。
这是我的项目结构树,只剩下几个模块:
top-parent
| pom.xml (modules: applications, checks, core, test)
|
+---applications
| | pom.xml (parent: top-parent) (modules: batch, surefire, web)
| <parent>
| <artifactId>applications</artifactId>
| <groupId>com.a.b.codechecker</groupId>
| <version>1.0</version>
| </parent>
| <artifactId>batch</artifactId>
|
| |
| \---web
| | pom.xml
| <parent>
| <groupId>com.a.b.codechecker</groupId>
| <artifactId>applications</artifactId>
| <version>1.0</version>
| </parent>
| <artifactId>web</artifactId>
|
+---checks
| | pom.xml (parent: top parent) (modules: aggregator, blacklist-check)
| <parent>
| <groupId>com.a.b.codechecker</groupId>
| <artifactId>parent</artifactId>
| <version>1.0</version>
| </parent>
| <groupId>com.a.b.codechecker.checks</groupId>
| <artifactId>checks</artifactId>
| |
| +---aggregator
| | pom.xml
<parent>
<artifactId>checks</artifactId>
<groupId>com.a.b.codechecker.checks</groupId>
<version>1.0</version>
</parent>
<artifactId>aggregator</artifactId>
我提供以下几个大纲。
根据问题, 这一切都是根据 Maven 指南还是我在处理定制的东西?
是的,你可以有 Parent, Child, Grand child type module structure.Parent and Child type maven multi module hierarchy 很简单,但在某些情况下,开发人员设计在一个模块内有几个子模块。如果你有一个包含 n 个模块和 m 个子模块的大型项目,对于不同级别的开发人员来说,它会变得很复杂。
根据这个问题, 以及如何解释这些子模块?知道可以指点我的指南吗? 为简单起见,如何管理取决于开发团队。我会建议,如果你有很多子模块,你可以 create/maintain 另一个独立项目,你可以在需要的地方将依赖项添加到主项目中。它将为您提供该项目的粒度和单独的团队工作,而不考虑主项目。
在大型项目的情况下,始终建议维护独立的项目,您可以在其他项目中添加依赖。为此,您可以使用 Nexus 或 Artifactory 进行工件管理。