提前使用縮略詞表示歉意。本地jar缺失傳遞Maven依賴關係
我正在工作Maven項目Foo
,這取決於當地的罐子Bar
。 Bar
也是使用Maven構建的,由於它是本地jar,我在Foo
的文件夾結構中創建了一個本地回購,並將jar放在那裏。
Bar.jar
置於base_dir_of_Foo\repo\group_ID\artifact_ID\1.0-SNAPSHOT\Bar.jar
。
我遇到的問題是,當我運行Foo
時,它拋出一個NoClassDefFoundError
,因爲它無法在Bar
的某個依賴關係中找到類。因此,Foo
通過Bar
缺少傳遞依賴關係。
有一點需要注意的是,當我爲Foo
運行mvn clean package
時,我看到一條警告「缺少POM for Bar」。 Foo
正在使用反射調用B
,並且Foo
能夠找到在Bar
中定義的類,但看起來像A
無法計算出Bar
的依賴關係。任何想法爲什麼發生這種情況?
本地回購是Foo
的pom.xml
定義:
<repositories>
<repository>
<id>local-repo</id>
<name>Local</name>
<url>file://${basedir}/repo</url>
</repository>
</repositories>
最後Foo
取決於Bar
默認編譯範圍:
<dependency>
<groupId>group_ID</groupId>
<artifactId>artifact_ID</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
更新: 我發現爲什麼聚甲醛Bar沒有找到,這是因爲我們把Bar.jar放在本地repo中,maven只會將jar文件複製到本地回購站itory緩存,它不會從jar中提取pom.xml,這是預期的嗎?
Inside C:\ Users \ hancwang.m2 \ repository \ group-id \ Bar \ 1.0-SNAPSHOT,我看到Bar-1.0-snapshot.jar被複制過來,但沒有Bar-1.0-snapshot。 POM。
你打造酒吧的源代碼使用Maven本地? – nandsito
是的,我確實,然後我將Bar.jar複製到Foo下的本地倉庫。 –
請嘗試我的回答 – nandsito