2013-04-10 72 views
4

我開始修復一個使用maven的java項目,同時我已經構建了項目,在運行時它失敗並且缺少依賴關係。我看了一下,錯誤遺漏了包含編譯時依賴的可選依賴。我可以通過並添加這些內容,但在我看來,我可以將所有的東西都構建並運行得很好,只是因爲我遺漏了一些代碼而使用了缺失的依賴關係,整個事情就會崩潰。Maven和可選的運行時依賴關係

我真正想知道的是,是否有發現,我選擇不包括可選依賴自動化的方式。我已經使用mvn dependency:tree,但這隻顯示我擁有的依賴項(不確定它檢查的範圍),我試過mvn dependency:analyze,但是這似乎表明它認爲我不使用的依賴項以及那些已被間接拉下的依賴項。我看不到的是如何查看我不包含的可選項列表。

目前我解決此工作的方法是閱讀勁歌,並嘗試從那裏工作了,但我不認爲這是特別強勁。

僅供參考,我是相當新的Maven的風格依賴管理和麪對它喜歡它,但是這件事可選是有點對我來說是絆腳石。我明白,可選項阻止了我將不會使用的依賴關係,但它沒有爲我單擊我如何​​可以研究哪些可選項可用並且我確實需要。

我使用Eclipse朱諾,m2eclipse的(也有行家3.0.5 CLI),java的6/7。

任何人有任何想法,我怎麼能做得更好,或者我完全忽略了什麼?

回答

2

沒有事情 - 有點 - 就是這樣。 Maven不會執行依賴關係管理,它允許您通過提供使用和分析它們的工具來執行依賴關係管理。所以這項工作仍然在開發者方面。人們經常混淆起來。

這主要是由於項目通常有不同的部署目標。因此,有時候他們會收集一堆jar文件,這些文件會被複制到tomcat中,並被複制到weblogic的一組不同的文件中。因此,在您的項目中可能會有一個自述文件,指出在部署Maven工件之前要複製的內容。或者這是隱含的知識 - 那麼你註定了。

依賴關係:分析不在源上的字節碼。因此它沒有看到maven知道什麼。

也許mvn help:effective-pom給出了一個更好的基礎來分析整個事情?或者您可以嘗試修改依賴項插件以顯示該信息。 Maven插件並不是很難處理。

我不知道顯示所有可選傳遞依賴項的插件。但由於依賴項的pom.xml文件被下載到本地maven倉庫中,因此您可以在那裏進行文本搜索。

前一段時間有選購的依賴關係的討論,以及:Best strategy for dealing with optional dependencies - 這可能是也有幫助。

+0

謝謝。今晚我會看看這個。 – 2013-04-16 15:14:30

+0

K,另一個線程看起來很有趣,但並不能幫助我解決我的問題。如果這是我的代碼,我會有一些機會,但是在代碼中計算不屬於我的可選項僅僅是痛苦的。我喜歡mvn help:effective-pom。我仍然認爲,調查所需的依賴關係和識別可選項的poms似乎是我現在唯一的選擇。我會等待其他人是否有任何答案,然後考慮回答問題。 – 2013-04-16 19:12:10

+0

耶 - 不是在這個意義上的答案:) 我偶然發現一個報告:http://maven.apache.org/plugins/maven-project-info-reports-plugin/dependency-convergence-mojo.html - 也許在報告部分有一些也提供了可選依賴關係的信息 – wemu 2013-04-17 08:55:48