我最近发现了神奇的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风格,我的应用程序是类,依赖集是接口)
答案 0 :(得分:4)
我会建议你:
创建父项目(<packaging>pom</packaging>
)。
让你的模块扩展它(通过向扩展它的项目添加<parent>your-parent</parent>
)。
在父母中定义<dependeneciesManagement/>
和<pluginManagement/>
部分。
从扩展父项的项目中删除依赖项和插件的所有<version/>
标记。
您还可以为每种技术创建pom文件(在您的情况下)。例如,您可以创建spring-dependencies-pom
,其中包含仅定义您的spring依赖项的<dependencyManagement/>
部分。然后在需要spring的模块中,只需添加spring-dependencies-pom
<scope>import</scope>
。 (查看here有关import
范围的说明。
这将允许您在一个中心位置进行更改。
答案 1 :(得分:1)
使用依赖关系管理,如下面的链接所述,版本管理委托给父模块,子模块可以自由使用它们。
http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html http://www.tutorialspoint.com/maven/maven_manage_dependencies.htm
答案 2 :(得分:0)
我认为您可以创建在其POM中列出其依赖项的模块D1,D2等,但不包含Java代码或其他资源。
然后在例如模块A1,你可以添加D1&amp; D2作为依赖关系,然后所有的所有依赖关系都将被包含在传递中。
然后你最终处于组成D1等的依赖关系都可以在一个地方管理的情况 - 也就是说,在D1的POM中。
这就是你要追求的吗?