我打算让自己打结,让Maven处理我的应用程序中模块之间的依赖关系,并且我想知道什么是最好的练习方式。
我有一组库用于我的所有应用程序,如下所示:
<shared-code>
|---- common-lib
|---- REST-lib
|---- WebApp-lib
|---- REST-Pom
\---- WebApp-Pom
实际上有更多的人工制品,但重要的是:
当我来写我的应用程序时,我得到了:
<application-code>
|---- parent-pom
|---- module-1
|---- module-2
\---- module-3
根据my previous question的建议,我一直在定义表单中的依赖项:
<dependency>
<artifactId>common-lib</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.parent.version}</version>
</dependency>
我喜欢这个,因为当我为所有版本设置版本时,我不必浏览每个POM。
问题在于${project.parent.version}
是针对每个POM单独评估的,并且不会总是评估相同的事情。
我认为我需要的是一个表达式,我可以将其用作说明&#34;该项目的版本的版本,而不是扩展它的东西&#34;
答案 0 :(得分:1)
家长poms 也旨在保持孩子们包含的依赖关系(<dependencies>
)或按需提供(<dependencyManagement>
)。
在父pom的dependencyManagement
元素中定义它们:
<dependencyManagement>
<dependencies>
<dependency>
<artifactId>common-lib</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.parent.version}</version>
</dependency>
<!-- and so for -->
</dependencies>
</dependencyManagement>
让孩子们的项目在他们自己的pom中引用它们:
<dependencies>
<dependency>
<artifactId>common-lib</artifactId>
<groupId>${project.groupId}</groupId>
</dependency>
<!-- and so for -->
</dependencies>
你可以注意到,依赖版本并不需要,不应该由孩子设置,因为它是由父pom定义的。