我在这里已经阅读了很多问题和答案,但是找不到能消除我疑虑的方法。
我有一个由Maven
管理的大型Java项目(我们称其为 MainProj ),它具有许多依赖项,其中一些依赖项是其他 standalone 项目由我和我的团队完成。
我所做的是为每个相关项目创建一个maven项目,将每个项目都安装到我的存储库中,并通过标准<dependency></dependency>
导入到 MainProj 中。
我现在在Maven中发现了继承和聚合,但是我不知道的是:
我的 MyProject 是否适合此结构,或者标准依赖项导入是最佳做法?
我已经阅读了 superPom (或父pom)的概念,但是我不知道它是如何工作的:我应该创建一个独立的pom,与任何Java代码都不相关,仅管理孩子和其他相关的pom?或者在我的示例中,该 superPom 应该是 MainProj 吗?
谢谢
答案 0 :(得分:1)
您可以通过两种方式解决此问题。
1)ParentPOM(SuperPOM)
2)多模块Maven项目
超级POM
超级POM(父POM)用于构建项目,以避免重复使用pom文件之间的继承或重复配置。您为父POM创建了一个单独的项目,应添加所有常见的依赖项和插件。然后在子项目中,您必须添加父POM标识符
<parent>
<groupId>com.parent.demo</groupId>
<artifactId>MavenExamples</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
例如:https://howtodoinjava.com/maven/maven-parent-child-pom-example/
多模块项目
当多个模块是项目的一部分时,首选方法是将它们构造为maven多模块项目,并将构建职责完全委派给Maven。它不需要像Super POM这样的新项目。在多模块项目中,将所有相关项目添加到Main项目中。主项目POM充当顶级POM(类似于Super POM),并包含所有常见的依赖项和插件。
例如:http://www.codetab.org/apache-maven-tutorial/maven-multi-module-project/
参考:How to structure a multi-modules Maven project to compile it at once?