meiner Meinung nach das Maven-Abhängigkeits-Plugin ist falsch bei der Berechnung der Abhängigkeitsliste.maven dependency plugin ignoriert Abhängigkeitsversionen?
Angenommen, diese drei Projekte:
Base1:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>mygroup</groupId>
<artifactId>base1</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
</project>
base2:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>mygroup</groupId>
<artifactId>base2</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
</project>
kombiniert:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>mygroup</groupId>
<artifactId>combined</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>mygroup</groupId>
<artifactId>base1</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>mygroup</groupId>
<artifactId>base2</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
Sowohl Base1 und base2 hängen von commons-lang , aber jeder auf einer anderen Ausführung! kombiniert hängt von beiden ab, base1 und base2.
Beim Aufruf von mvn dependency:list
auf kombiniert, würde ich erwarten, base1, base2 und commons-lang in den Versionen 2.3 und 2.6 zu sehen, da beide verwendet werden. jedoch die tatsächliche Ausgabe ist:
[INFO] The following files have been resolved:
[INFO] commons-lang:commons-lang:jar:2.3:compile
[INFO] mygroup:base1:jar:1.0-SNAPSHOT:compile
[INFO] mygroup:base2:jar:1.0-SNAPSHOT:compile
Es ist nicht einmal mit der Common-lang mit der höchsten Versionsnummer, sondern nur die, die es zuerst findet.
Wie kann ich dies vermeiden? Ich brauche alle Abhängigkeiten.
Das Beste für Sie wäre, den Code zu ändern, der eine Abhängigkeit von commons-lang erfordert: 2.3. Sorry ... – otonglet
@otonglet Wenn base1 und base2 Module von Drittanbietern sind, kann ich das nicht tun. – radlan
@radlan sind Sie zufällig verwirrend 'mvn Abhängigkeit: Liste' mit [' mvn Abhängigkeit: Baum'] (https://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html)? – nullpointer