[英]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.