我面临的情况是我需要指定传递依赖的版本之一。我如何使用(参考)传递性依赖的版本?
有了下面的依赖关系树,
A <- B <- C
我需要用C的pom.xml
指定的版本有没有办法做到这一点?所以我可以过滤这样的文件?
A's version is @{...a.version}
我面临的情况是我需要指定传递依赖的版本之一。我如何使用(参考)传递性依赖的版本?
有了下面的依赖关系树,
A <- B <- C
我需要用C的pom.xml
指定的版本有没有办法做到这一点?所以我可以过滤这样的文件?
A's version is @{...a.version}
使用<optional>true</optional>
:
Ç - >乙 - >甲
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>
如果你想指定一个(可能的)transiti的版本将依赖关系放入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中的属性值将是在两个模块甲访问和B.
特别地,该属性值现在可以被施加时资源滤波。
模块A和B是否是您的代码? –
@SteveC是的,实际上。 –
这些模块是否共享一个父pom.xml? –