2010-02-23 77 views
1

如果使用的是封閉的倉庫,但你的應用程序使用一些依賴外部(行家公共)存儲庫。知道你的依賴在行家

有沒有可以依賴它們是從內部和從外部存儲庫來產生列表的方式。

或者我必須做手工,把只是內部資料庫和依賴關係這些都是外部的,或有你認爲會得到更好的結果第三種方式我構建失敗。謝謝

編輯

@Pascal Thivent

這裏是交易:

比方說,我的項目只使用2依賴性: 第一個是:JUnit的 第二個是:速度

現在讓我們假設log4j的是JUnit的的傳遞依賴(這是我的項目中使用的依賴關係的一個)。

讓我們假設速度不包含任何傳遞依賴。並且可以設想速度在我的公司存儲庫上,並且我知道junit正在從maven存儲庫下載,但我不知道log4j,因爲我沒有將它放在<dependecies>標記中。

有沒有一種方法,我可以得到的依賴或東西的清單..這將由他們從coing庫或類似這樣的東西組依賴關係:

速度 - 企業庫 的JUnit - Maven倉庫 的log4j - Maven倉庫

或者,如果我使用mirrorof指定要使用明確公司資源庫,將Maven的告訴我,我失去了它的文物,其中包括傳遞依賴的人?

TNX

回答

6

我會用dependency:purge-local-repository用於此目的和分析控制檯輸出從那裏依賴性(再)來拆分看。

如果最後使用公司存儲庫並希望強制Maven將其用於所有請求(即永遠不訪問公共存儲庫),那麼您應該在settings.xml中聲明公司存儲庫爲mirrorOf所有存儲庫:

<settings> 
    ... 
    <mirrors> 
    <mirror> 
     <id>corporate-repository</id> 
     <mirrorOf>*</mirrorOf> 
     <name>Maven Repository Manager running on repo.mycompany.com</name> 
     <url>http://repo.mycompany.com/proxy</url> 
    </mirror> 
    </mirrors> 
    ... 
</settings> 

但是我也許在這裏推斷得太多了。

更新:

或者,如果我使用mirrorof指定要使用明確公司資源庫,將Maven的告訴我,我失去了它的文物,其中包括傳遞依賴的人?

是。

+0

@Pascal Thivent謝謝帕斯卡我認爲我什麼我尋找,跑讓我先問問你..清除本地存儲庫前..我不會清除/運行這個時刪除本地倉庫裏面一世 ? – ant 2010-02-23 09:48:51

+0

@ c0mrade好了,魔力的文件明確表示:*從本地資源庫中刪除項目的依賴,並可選重新加以解決*所以,是的,這是要刪除從本地存儲庫中的項目依賴(即得。實際上是這個想法)。但是這不應該是一個問題,除非你手動在本地存儲庫中爲這個項目安裝了一個工件。如果您有疑問,那麼先製作一個備份或本地存儲庫(例如'cp〜/ .m2/repository〜/ .m2/repository.orig')。 – 2010-02-23 09:56:36

+0

@Pascal Thivent再次感謝你,我想我沒有以我想要的方式表達自己,我明白你來自哪裏。問題是我們只想使用我們的「公司」存儲庫,正如你在上面的答案中解釋過的那樣可以完成的,但事情是我們對公司有一些依賴關係,有些依賴於maven存儲庫。我想將它們全部下載,以便它們可以上傳到企業存儲庫並僅從那裏使用,現在的事情是我不知道從哪裏下載哪些依賴關係..如果我知道所有的外部依賴關係,我會下載它們,使用它們從C庫 – ant 2010-02-23 10:01:40

0

我猜你必須在你的公司存儲庫服務器上使用NexusArtifactory才能根據需要將遠程存儲庫中的工件透明地下載到公司存儲庫中。

如果你想知道,只有你的項目的m2eclipse的傳遞依賴給人一種依賴關係圖,層次吧。

+0

@Chandru我們他們已經開始運行了 – ant 2010-02-23 10:08:06

+0

當您代理遠程倉庫時,您將只從公共倉庫下載一次。 – 2010-02-23 10:20:30