Wir haben ein Projekt A, das von Projekt B abhängt, das von Bibliothek C abhängt. A und B sind lokale Projekte, während C eine öffentliche Bibliothek in maven central repo ist.Wie kann man transitive Abhängigkeit für lokale Abhängigkeit auflösen?
pom.xml für A:
<name>ProjA/name>
...
<dependency>
<groupId>com.abc</groupId>
<artifactId>ProjB</artifactId>
<version>1.0</version>
</dependency>
pom.xml für B:
<name>ProjB/name>
...
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>C</artifactId>
<version>2.23.2</version>
</dependency>
Wenn mvn dependency:tree -Dverbose
in A laufen, es löst nicht die Abhängigkeiten von B und so in B verwendet Abhängigkeiten wird auch nicht in Maven Dependencies von A angezeigt. Dies ist für die Kompilierung in Ordnung, wird jedoch in der Laufzeit wegen des NoClassDefFound-Fehlers fehlschlagen.
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ProjA 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ ProjA ---
[INFO] com.abc.projA:jar:1.0
[INFO] +- com.abc.projB:jar:1.0:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.326 s
[INFO] Finished at: 2016-09-15T16:29:49-07:00
[INFO] Final Memory: 13M/309M
[INFO] ------------------------------------------------------------------------
Gibt es irgendeine Möglichkeit, die transitive Abhängigkeit für eine solche lokale Abhängigkeit auflösen zu lassen?
Das Seltsame verursachen wird, B bereits zum Zweck des Gebäudes A. .m2 installiert Die B.jar an der richtigen Stelle ist .m2/com/abc /ProjB/1.0 und innerhalb der B.jar/META-INF/maven/com.abc/ProjB/pom.xml sind alle Abhängigkeiten einschließlich C ebenfalls vorhanden. – Lee