2015-02-11 46 views
1

我已經看到了很多關於此的帖子,但讓我說,我不是想寫一個插件。 我正在做一個項目分析器,需要找出解決的依賴與他們的路徑。如何以編程方式獲取所有傳遞依賴關係

給定一個pom.xml(在一個項目中)我想找出所有的依賴關係(傳遞太)與他們的路徑,如果可能的話還缺少依賴關係。

獲得版本獨立的解決方案將是獎金。 PS:每個答案都建議使用exec在cli上運行命令,我已經在使用這個命令,並希望找到一個更好的方法來做到這一點。

+0

你說的缺少依賴的意思是什麼呢?我會假定,如果有依賴不能被Maven解決,那麼項目將無法編譯... – Makoto 2015-02-11 07:14:34

+0

因此,如果項目從orignal機器移動到右側,那麼maven無法解決的本地依賴關係會是什麼? 只有當項目不能編譯時纔會出現maven dependecies的情況。 – gabber12 2015-02-11 07:38:39

+0

所以你會對「提供」依賴關係感興趣嗎?那些是Maven不會從網上下載的依賴關係;假設它們在運行的盒子上提供。 – Makoto 2015-02-11 07:41:26

回答

2

你可以使用maven依賴插件。我已經使用,發現非常有幫助,我下面所提到的兩個:

  1. dependency:tree

顯示整個依賴直接和傳遞所使用的樹形結構。一定要使用詳細模式。
Link

  • dependency:list
  • 在顯示以列表的方式的一個項目中使用的所有依賴關係。當我需要知道什麼是過渡性的,哪些是直接用於許可目的時,我個人並不覺得這很方便。但是,當你只需要知道你正在使用的是什麼或者檢測到不同版本的重複庫時,它就有了它的位置。
    Link

    此外還有分析,當閱讀文檔時,它似乎很方便,但我需要嘗試一下,我會。

  • dependency:analyze
  • +0

    你的意思是通過java調用maven的系統調用嗎?我已經這樣做了,但似乎有很多工作需要解析和一個非健壯的方法。 – gabber12 2015-02-11 07:36:06

    +0

    沒有任何命令行調用。你可以將它重定向到一個文件,然後進行一些簡單的解析 – 2015-02-11 07:56:13

    +0

    是的,我只是指一個命令行調用,但解析會容易在插件中發生變化。我想要更多的解決方案來調用某些apis來獲取依賴關係或樹。 – gabber12 2015-02-11 07:58:02

    相關問題