使用Maven父级和模块

时间:2013-10-03 10:11:03

标签: java 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风格,我的应用程序是类,依赖集是接口)

3 个答案:

答案 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中。

这就是你要追求的吗?