我有一个问题,关于如何使用继承和聚合的组合最好地重新构建多个单独的 Maven 项目。
设置场景:
- 有 3 个基于代码的现有 Maven 项目,全部由同一团队开发。
- 1. 项目是一个API,我们调用的是project-api。
- 另外 2 个项目是使用 project-api 的 Web 应用程序。我们将它们称为 web-app1 和 web-app2。
所有三个项目都有一些共同的基本依赖项,例如 log4j 和 junit。除此之外,web-app1 和 web-app2 依赖于project-api,并且它们之间还共享许多额外的公共依赖项。
我一直在阅读https://books.sonatype.com/mvnref-book/reference/pom-relationships-sect-pom-best-practice.html https://books.sonatype.com/mvnref-book/reference/pom-relationships-sect-pom-best-practice.html,我只是想确认我了解最佳实践。
遗产:
创建一个组织级别的父 POM,其中包含所有三个项目共有的依赖项(依赖项管理)以及一些环境设置和总体项目信息,对我来说是否有意义。意图是所有 Maven 项目(不一定是直接)都继承自此 POM。
对我来说,创建另一个父 POM 是否有意义,其中包含 web-app1 和 web-app2 共有的依赖项(依赖项管理),并且只有 web-app1 和 web-app2 从此 POM 继承。我认为这个 POM(我们称之为 Web 应用程序父 POM)应该是组织级别父 POM 的子 POM。
聚合:
就聚合而言,我不想在一天结束时创建单个工件。相反,我想运行一个 Maven 构建命令(可能在组织 POM 级别)来按以下顺序构建三个项目:
- 项目-api
- web-app1
- web-app2
这是否意味着组织父 POM 将声明模块:
- 项目-api
- Web 应用程序父 POM
Web 应用程序父 POM 将声明模块:
- web-app1
- web-app2
请注意,Web 应用程序父 POM 和组织父 POM 没有任何相关代码。我相信这是可以的,注意“事实上,在 Maven 世界中,项目根本不需要包含任何代码,只需包含 pom.xml”。取自http://maven.apache.org/pom.html http://maven.apache.org/pom.html.
最后,如何确保遵守我需要的构建顺序?例如。构建组织父 POM 会导致构建 project-api 并在构建 web-app1 和 web-app2 时使用此最新构建?
我希望这不会太令人困惑,很乐意澄清是否需要更多信息。如果我完全错了,请随时告诉我!谢谢。