[英]Maven - installed to local repo, not getting transitive dependencies
我有一個 Maven 項目,我想與我的其他幾個項目分享。 它有一些自定義代碼,然后還有一些對 log4j、jasypt 等內容的依賴。
我構建它並將其安裝到我的本地 Maven 存儲庫中。 我可以看到它已成功放置在那里。 查看 .m2/repository/derp/Foo/1.0 它有一個 .pom 並定義了它的所有依賴項。
我也可以在我的更高級別的項目中將它定義為依賴項,並且它會編譯。
<dependency>
<groupId>my.group</groupId>
<artifactId>Foo</artifactId>
<version>1.0</version>
</dependency>
我可以在 Eclipse 的“Maven 依賴項”中看到 Jar,展開該 jar 我可以看到它在 META-INF/maven/derp/Foo/pom.xml 中有正確的 pom 和依賴項。
但是我在 Foo 之上的頂級項目沒有獲得 Foo 需要的依賴項。 我得到運行時異常,並且我在 Eclipse 中的 Maven 依賴項中看不到任何可傳遞依賴項 jar。
我需要做什么來確保 Maven 知道在我的本地存儲庫中查看 Foo 的 Pom,以便它獲得它需要的所有傳遞依賴項?
- - - 編輯 - - -
回答下面的評論,它們是這樣定義的,在項目標簽下的頂層有依賴項標簽。
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.2</version>
</dependency>
等等...
這些是當我剛剛構建和運行這個 Foo 項目時 maven 正確找到的 jar,但是如果項目依賴於 Foo,(Bar),我發現當我嘗試運行 Bar 時,maven 不包含這些 jar。
“Foo 之上的頂級項目沒有獲得依賴項”是什么意思?
正如您所說,構建反應器中“高於” Foo
任何內容都應直接依賴於Foo
。 指定的<dependency/>
將解析為Foo
的依賴項(在Foo
指定的范圍內)。
在不了解您項目的具體情況的情況下,我們不可能為您提供進一步的幫助。
一些可能的常見情況:
test
執行階段訪問test
范圍的依賴項。 只是不正確。java
運行時自動為您加載這些依賴項。 這也不是真的。exec:java
目標,並在<configuration/>
指定所需的解析范圍,也可能用於該<execution/>
。<dependencyManagement>
誤認為<dependencies>
。 這發生的方式比我預期的要多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.