2016-07-26 3 views
2

Я столкнулся с ситуацией, когда мне нужно указать одну из версий транзитивной зависимости.Как я могу использовать (см.) Версию транзитивной зависимости?

С следующим деревом зависимостей,

A <- B <- C 

Мне нужно указать Исполнения А в pom.xml C в

Есть ли способ сделать это? Чтобы я мог фильтровать некоторый файл, как это?

A's version is @{...a.version} 
+0

Являются ли модули A и B вашим кодом? –

+0

@SteveC Да, на самом деле. –

+0

Имеют ли эти модули общий родительский pom.xml? –

ответ

1

Применение <optional>true</optional>:

С -> В -> A

POM (В):

<dependencies> 
    <dependency> 
     <groupId></groupId> 
     <artifactId>A</artifactId> 
     <version></version> 
     <optional>true</optional> 
    </dependency> 
    ... 
</dependencies> 

POM (С):

<dependencies> 
    <dependency> 
     <groupId></groupId> 
     <artifactId>B</artifactId> 
     <version></version> 
    </dependency> 
    <dependency> 
     <groupId></groupId> 
     <artifactId>A</artifactId> 
     <version></version> 
    </dependency> 
    ... 
</dependencies> 
2

Если вы хотите указать версию (возможно) трансити ve, установите зависимость в секцию dependencyManagement вашего POM. Затем он используется, если зависимость происходит транзитивно (и молча игнорируется, если такая транзитивная зависимость не найдена).

1

Невозможно напрямую ссылаться на версию какой-либо произвольной зависимости (переходной или нет).

Однако в ваших родителей POM вы можете определить свойство:

<properties> 
    ... 
    <yourCdep.version> 
    ... 
</properties> 

и добавить зависимость в к секции dependencyManagement:

<dependencyManagement> 
    <dependencies> 
     ... 
     <dependency> 
      <groupId>yourCdep.group</groupId> 
      <artifactId>yourCdep</artifactId> 
      <version>${yourCdep.version}</version> 
     </dependency> 
     ... 
    </dependencies> 
</dependencyManagement> 

Удалить версию от зависимости в модуле В качестве теперь он «управляется».

Значение свойства в родительском ПОМ будут доступны в обоих модулей А и В.

В частности, это значение свойства теперь могут быть применены при фильтрации ресурсов.