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