通过继承和/或聚合重构Maven项目

时间:2018-08-28 08:06:39

标签: java maven

我在这里已经阅读了很多问题和答案,但是找不到能消除我疑虑的方法。

我有一个由Maven管理的大型Java项目(我们称其为 MainProj ),它具有许多依赖项,其中一些依赖项是其他 standalone 项目由我和我的团队完成。

我所做的是为每个相关项目创建一个maven项目,将每个项目都安装到我的存储库中,并通过标准<dependency></dependency>导入到 MainProj 中。

我现在在Maven中发现了继承聚合,但是我不知道的是:

  • 我的 MyProject 是否适合此结构,或者标准依赖项导入是最佳做法?

  • 我已经阅读了 superPom (或父pom)的概念,但是我不知道它是如何工作的:我应该创建一个独立的pom,与任何Java代码都不相关,仅管理孩子和其他相关的pom?或者在我的示例中,该 superPom 应该是 MainProj 吗?

  • 如果要导入具有继承性或聚合性的​​相关项目?

谢谢

1 个答案:

答案 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?

相关问题