Angesichts der Eltern und Kind Pom unten und lib1
und lib2
enthalten beide die Klasse foo.bar.Test
.Wie behandelt Maven transitive Abhängigkeiten, die von Eltern geerbt werden?
Mutter pom
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>foo</groupId>
<artifactId>foo-parent</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>my.transitive</groupId>
<artifactId>lib1</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
Kind pom
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>foo</groupId>
<artifactId>foo-parent</artifactId>
<version>1.0</version>
</parent>
<artifactId>foo-child</artifactId>
<dependencies>
<dependency>
<groupId>my.transitive</groupId>
<artifactId>lib2</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
Wenn ich foo-child
als Abhängigkeit in myApp
umfassen und instanziiert foo.bar.Test
, welche Version der Klasse würde Maven lösen? Und warum?
meine app pom
<project>
<modelVersion>4.0.0</modelVersion>
<artifactId>myApp</artifactId>
<groupId>myApp</groupId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>foo</groupId>
<artifactId>foo-child</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
Sie können auch 'mvn Abhängigkeit: list' oder' mvn Abhängigkeit: build-classpath' verwenden, wenn Sie eine weniger ausführliche Definition des Klassenpfads wünschen. Im Allgemeinen wird Maven die "nearest definition" -Strategie verwenden, die hier beschrieben wird: https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Transitive_Dependencies – Daniel