我最近发现了神奇的 Maven 模块和父系统。
我有几个应用程序,比如说 A1、A2、A3(还有更多)。
我有几个依赖项集,D1、D2、D3、D4(不是单个依赖项,考虑整个框架,例如 Spring 及其组件)
我的应用程序共享 D4 依赖项集,因此我有一个包含它的基础 pom,B1 由 A1、A2、A3 使用。
现在,棘手的部分:
A1 取决于 D1、D2。
A2 取决于 D2、D3。
A3 取决于 D1、D3。
如您所见,所有应用程序中都没有使用额外的依赖项集,因此我无法在基础 POM 中移动它。
有什么好的方法来管理这些依赖关系吗?当我必须更新所有应用程序的依赖项时,我度过了糟糕的一天,我想以更简单的方式更改它。请记住,我有更多应用程序,因此它一定不是 A1、A2、A3 的特定答案。
(旁注:如果您以 OOP 风格思考,我的应用程序是类,依赖集是接口(interface))
最佳答案
我会推荐你:
创建父项目 (
<packaging>pom</packaging>
)。让您的模块扩展它(通过将
<parent>your-parent</parent>
添加到扩展它的项目中)。定义
<dependeneciesManagement/>
和<pluginManagement/>
父级部分。删除所有
<version/>
扩展父项的项目中的依赖项和插件的标签。您还可以根据技术类型(根据您的情况)创建 pom 文件。例如,您可以创建
spring-dependencies-pom
其中包含<dependencyManagement/>
仅定义 spring 依赖项的部分。然后在需要 spring 的模块中,只需添加spring-dependencies-pom
与<scope>import</scope>
。 (查看 here 以了解import
范围的说明)。
这将允许您在一个中心位置进行更改。
关于java - 使用 Maven 父级和模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19156474/