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

标签 java maven

我在这里阅读了很多关于 SO 的问题和答案,但我找不到可以消除我疑虑的答案。

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

我所做的是为每个相关项目创建一个 Maven 项目,将每个项目安装到我的存储库中,并使用标准 <dependency></dependency> 导入到 MainProj 中。进口。

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

  • 我的 MyProject 适合这种结构吗?还是标准依赖项导入是最佳实践?

  • 我已经阅读了 superPom (或父 pom)的概念,但我无法弄清楚它是如何工作的:我应该创建一个独立的 pom,不与任何 java 代码相关,只管理子项和其他相关的 pom?或者,在我的示例中,superPom 应该是 MainProj 中包含的那个?

  • 如果我应该通过继承或聚合导入相关项目?

谢谢

最佳答案

您可以通过两种方式解决此问题。

1)ParentPOM(SuperPOM)

2) 多模块 Maven 项目

super POM

Super 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 多模块项目,并将构建责任完全委托(delegate)给 Maven。它不需要像 Super POM 这样的新项目。在多模块项目中,将所有相关项目添加到主项目中。主项目 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?

关于java - 通过继承和/或聚合重构 Maven 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52052982/

相关文章:

java - 实时数据库中错误情况的处理方法 "firebase"

java - 如何在 Android Studio 中从 java 类意向到 kotlin 类

Java多线程同步块(synchronized block)永远循环

java - mvn 测试 java.lang.OutOfMemoryError : unable to create new native thread

java - 如何在maven项目中添加70个本地jar?

java - 为什么 Eclipse 控制台中的一些输出是红色的?

java - 在另一个包的接口(interface)文件中使用类

java - Spring Boot 示例在 eclipse 中抛出 MojoExecutionException

java - 如何将依赖项的测试 jar 包含到 Maven 项目的部署中?

maven - Maven 中不同配置文件的不同 SCM