2

我面临一种情况,我需要指定一个传递依赖的版本。

使用以下依赖树,

A <- B <- C

我需要在 C 的 pom.xml 中指定 A 的版本

有没有办法做到这一点?这样我就可以过滤一些这样的文件?

A's version is @{...a.version}
4

3 回答 3

2

如果要指定(可能的)传递依赖的版本,请将依赖放入 POM 的 dependencyManagement 部分。然后,如果依赖关系是可传递的,则使用它(如果没有找到这样的传递依赖,则静默忽略)。

于 2016-07-26T13:43:22.790 回答
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 中的依赖项中删除版本,因为它现在是“托管的”。

父 pom 中的属性值可以在模块 A 和 B 中访问。

特别是,现在可以在资源过滤时应用此属性值。

于 2016-07-27T15:37:10.680 回答
1

使用<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>
于 2016-07-26T13:01:24.937 回答