簡體   English   中英

Maven - 安裝到本地倉庫,沒有獲得傳遞依賴

[英]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指定的范圍內)。

在不了解您項目的具體情況的情況下,我們不可能為您提供進一步的幫助。

一些可能的常見情況:

  1. 您希望能夠在某些非test執行階段訪問test范圍的依賴項。 只是不正​​確。
  2. 您希望指定對工件的依賴項會導致java運行時自動為您加載這些依賴項。 這也不是真的。
    您需要在maven exec 插件上調用exec:java目標,並在<configuration/>指定所需的解析范圍,也可能用於該<execution/>
  3. 您將<dependencyManagement>誤認為<dependencies> 這發生的方式比我預期的要多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM