使用Maven父级和模块
我最近发现了神奇的Maven模块和父系统。
我有几个应用程序,比方说A1,A2,A3(还有更多)。
我有几个依赖集,D1,D2,D3,D4(不是单一依赖,考虑整个框架,如Spring及其组件)
我的应用程序共享D4依赖集,因此我有一个包含它的基本pom,A1,A2,A3使用B1。
现在,棘手的部分:
A1取决于D1,D2。
A2取决于D2,D3。
A3取决于D1,D3。
如您所见,所有应用程序中都没有使用额外的依赖关系集,因此我无法在基础POM中移动它。
管理这些依赖项有什么好方法吗? 我有一个糟糕的一天,我必须更新应用程序的依赖项,我想以更简单的方式更改它。 请记住,我有更多的应用程序,因此它不能是A1,A2,A3的特定答案。
(旁注:如果您认为采用OOP风格,我的应用程序是类,依赖集是接口)
我建议你:
-
创建父项目(
)。pom -
使模块扩展它(通过将
到扩展它的项目中)。your-parent -
在父级中定义
和
部分。 -
从扩展父项的项目中删除依赖项和插件的所有
标记。 -
您还可以为每种技术创建pom文件(在您的情况下)。 例如,您可以创建
spring-dependencies-pom
,其中包含仅定义spring依赖关系的
部分。 然后在需要spring的模块中,只需使用
添加import spring-dependencies-pom
。 (请在此处查看有关import
范围的说明)。
这将允许您在一个中心位置更改内容。
使用依赖关系管理,如下面的链接所述,版本管理被委托给父模块,子模块可以自由使用它们。
http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html http://www.tutorialspoint.com/maven/maven_manage_dependencies.htm
我认为您可以创建模块D1,D2等,它们的POM中列出了它们的依赖项,但不包含Java代码或其他资源。
然后在例如模块A1中,您可以添加D1和D2作为依赖项,然后将传递所有的所有依赖项。
然后你最终处于组成D1等的依赖关系可以在一个地方管理的情况 – 也就是说,在D1的POM中。
这就是你要追求的吗?