繁体   English   中英

使用Maven父级和模块

[英]Working with Maven parent and modules

我最近发现了神奇的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风格考虑,则我的应用是类,依赖集是接口)

我建议您:

  • 创建一个父项目( <packaging>pom</packaging> )。

  • 使您的模块扩展它(通过将<parent>your-parent</parent>到扩展它的项目中)。

  • 在父级中定义一个<dependeneciesManagement/><pluginManagement/>部分。

  • 从扩展父级的项目中删除依赖项和插件的所有<version/>标签。

  • 您还可以针对每种技术创建pom文件(针对您的情况)。 例如,您可以创建spring-dependencies-pom ,其中包含一个<dependencyManagement/>部分,该部分仅定义您的spring依赖项。 然后在需要spring的模块中,只需将spring-dependencies-pom添加到<scope>import</scope> 在此处查看有关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作为依赖项,然后所有THEIR依赖项将被可传递地包括在内。

然后,您最终陷入一种局面,即可以在一个地方(即在D1的POM中)全部管理组成D1等的依赖项。

这是你所追求的吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM