2016-07-26 17 views
2

Ich stehe vor einer Situation, die ich eine der transitiven Abhängigkeitsversion angeben muss.Wie kann ich die transitive Abhängigkeitsversion verwenden (referieren)?

Mit folgendem Abhängigkeitsbaum,

A <- B <- C 

Ich brauche eine Version in C der pom.xml

Gibt es eine Möglichkeit zu geben, dies zu tun? Damit ich eine Datei so filtern kann?

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

Sind die Module A und B Ihr Code? –

+0

@SteveC Ja, eigentlich. –

+0

Teilen diese Module eine Eltern pom.xml? –

Antwort

1

Verwendung <optional>true</optional>:

C -> B -> A

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

Wenn Sie möchten die Version eines (möglichen) Transits angeben ve Abhängigkeit, setzen Sie die Abhängigkeit in den Abschnitt dependencyManagement Ihres POM. Dann wird es verwendet, wenn die Abhängigkeit transitiv auftritt (und still ignoriert wird, wenn keine solche transitive Abhängigkeit gefunden wird).

1

Es ist nicht möglich, die Version einer beliebigen Abhängigkeit (transient oder nicht) direkt zu referenzieren.

jedoch in Ihren Eltern pom Sie eine Eigenschaft definieren:

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

und die Abhängigkeit in einem dependencyManagement Abschnitt hinzufügen:

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

Entfernen Sie die Version aus der Abhängigkeit in Modul B als Es ist jetzt "verwaltet".

Der Eigenschaftswert in der übergeordneten POM wird in beiden Modulen A und B.

Insbesondere diese Eigenschaft Wert nun zugänglich sein kann, wenn Ressourcen-Filterung angewandt werden.