2016-09-16 9 views
0

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?

Antwort

2

Ich denke, das Problem hier ist, B nicht in der lokalen Repo .m2

Sie müssen für B laufen mvn install vorhanden ist, das Paket in .m2 zu installieren, die von einem lokal aufgenommen werden kann.

Dann mvn dependency:tree -Dverbose in A läuft nicht Problem

+0

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

Verwandte Themen