2016-09-16 183 views
0

我們有一個項目A,它依賴於依賴於庫C的項目B.A和B是本地項目,而C是Maven中央倉庫中的公共庫。如何讓maven解析本地依賴的傳遞依賴項

pom.xml中對於A:

<name>ProjA/name> 
... 
<dependency> 
    <groupId>com.abc</groupId> 
    <artifactId>ProjB</artifactId> 
    <version>1.0</version> 
</dependency> 

pom.xml中爲B:

<name>ProjB/name> 
... 
<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>C</artifactId> 
    <version>2.23.2</version> 
</dependency> 

當在運行mvn dependency:tree -Dverbose,它不能解決B在B中使用的依賴關係和依賴性等在A的Maven Dependencies中也沒有顯示。這對於編譯很好,但由於NoClassDefFound錯誤而在運行時會失敗。

[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] ------------------------------------------------------------------------ 

有沒有什麼辦法讓Maven解決這種局部依賴關係的傳遞依賴關係B?

回答

2

我覺得這裏的問題是B沒有在本地回購.m2

你需要運行mvn install對於B存在,在軟件包安裝到.m2可以通過本地拾取。

然後在運行mvn dependency:tree -Dverbose不會造成問題

+0

奇怪的是B被安裝到已經.M2建築A的目的B.jar是在正確的位置.m2目錄/ COM/ABC /ProjB/1.0以及B.jar/META-INF/maven/com.abc/ProjB/pom.xml中的所有依賴關係,包括C在內。 – Lee