0

Ich habe zwei Abhängigkeiten, artefact-a und artefact-b. Jede hängt von einer anderen Version von artefact-c ab. Wie kann ich Artefakte schattieren, um diese unterschiedlichen Abhängigkeiten zu nutzen? (Oder zu haben artefakt ein verwenden, um eine schattierte Abhängigkeit und Artefakt-b die normale Verwendung.Wie kann Maven Shade Plugin mehrere Versionen einer transitiven Abhängigkeit verschieben?

 <dependency> 
      <groupId>group-a</groupId> 
      <artifactId>artifact-a</artifactId> 
      <version>2.1.0</version> 
<!-- artifact-a uses version 3 of artifact-c. 
How do I relocate version 3 without conflicting with version 4? 
       <groupId>group-c</groupId> 
       <artifactId>artifact-c</artifactId> 
       <version>3.0.0</version> 
--> 
     </dependency> 
     <dependency> 
      <groupId>group-b</groupId> 
      <artifactId>artifact-b</artifactId> 
      <version>1.5.0</version> 
<!-- artifact-b uses version 4 of artifact-c. 
How do I relocate version 4 without conflicting with version 3? 
       <groupId>group-c</groupId> 
       <artifactId>artifact-c</artifactId> 
       <version>4.0.0</version> 
--> 
     </dependency> 
+0

könnten Sie versuchen, mit ' Gruppe-C: Artefakt-c: *: 4.0.0 Gruppe-C: Artefakt-c: *: 3.0.0 'innerhalb Maven Schatten Konfiguration. – nullpointer

+0

Ich glaube nicht, dass das möglich ist. Normalerweise ignoriert Maven eine der Abhängigkeiten (es wird "ausgelassen für Version x.y.z" angezeigt, wenn Sie die Abhängigkeiten analysieren). Die Verwendung von zwei verschiedenen Abhängigkeiten, die dieselben Klassen enthalten, funktioniert nur, wenn Sie die Abhängigkeiten vollständig voneinander getrennt haben, indem Sie verschiedene Klassenladeprogramme verwenden. – john16384

+0

@nullpointer danke, aber ich kann keine dieser Versionen von "c" ausschließen, da "a" und "b" unterschiedliche Versionen von "c" benötigen. –

Antwort

0

Dies ist wahrscheinlich durch die Schaffung neuer Maven Module, deren einziger Zweck es ist artifact- schattieren getan können ein und ihre Abhängigkeiten (bzw. Artefakt-b). Dann würde das Hauptmodul an diesen beiden neuen Modulen ab.

Verwandte Themen