我面临一种情况,我需要指定一个传递依赖的版本。
使用以下依赖树,
A <- B <- C
我需要在 C 的 pom.xml 中指定 A 的版本
有没有办法做到这一点?这样我就可以过滤一些这样的文件?
A's version is @{...a.version}
我面临一种情况,我需要指定一个传递依赖的版本。
使用以下依赖树,
A <- B <- C
我需要在 C 的 pom.xml 中指定 A 的版本
有没有办法做到这一点?这样我就可以过滤一些这样的文件?
A's version is @{...a.version}
如果要指定(可能的)传递依赖的版本,请将依赖放入 POM 的 dependencyManagement 部分。然后,如果依赖关系是可传递的,则使用它(如果没有找到这样的传递依赖,则静默忽略)。
无法直接引用某些任意依赖项的版本(瞬态或非瞬态)。
但是,在您的父 pom 中,您可以定义一个属性:
<properties>
...
<yourCdep.version>
...
</properties>
并将依赖项添加到 dependencyManagement 部分:
<dependencyManagement>
<dependencies>
...
<dependency>
<groupId>yourCdep.group</groupId>
<artifactId>yourCdep</artifactId>
<version>${yourCdep.version}</version>
</dependency>
...
</dependencies>
</dependencyManagement>
从模块 B 中的依赖项中删除版本,因为它现在是“托管的”。
父 pom 中的属性值可以在模块 A 和 B 中访问。
特别是,现在可以在资源过滤时应用此属性值。
使用<optional>true</optional>
:
C -> B -> A
绒毛(乙):
<dependencies>
<dependency>
<groupId></groupId>
<artifactId>A</artifactId>
<version></version>
<optional>true</optional>
</dependency>
...
</dependencies>
点(C):
<dependencies>
<dependency>
<groupId></groupId>
<artifactId>B</artifactId>
<version></version>
</dependency>
<dependency>
<groupId></groupId>
<artifactId>A</artifactId>
<version></version>
</dependency>
...
</dependencies>