2013-12-11 73 views
1

我有一個項目需要依賴另一個項目生成的ZIP文件。這個'其他項目'不在我的控制之下。 ZIP文件是正確構建我的項目所必需的。執行我的項目不是必需的。我需要Maven爲我下載ZIP文件。Maven依賴zip郵件

我目前上創建ZIP神器的依賴關係是這樣的:

<dependency> 
    <groupId>org.foo</groupId> 
    <artifactId>zeus</artifactId> 
    <version>1.1</version> 
    <type>zip</type> 
    <scope>test</scope> 
</dependency> 

我的問題是範圍。如果我使用除test之外的任何東西,它會帶來很多來自「其他項目」的傳遞依賴項,這會導致我自己的項目。作爲作用域使用test實際上是作業,但它在我的IDE中顯示爲測試依賴性。所以我覺得我做錯了什麼。這不是測試依賴!

我已經瀏覽了可用的Maven範圍('compile','provided'等),我似乎無法找到與我的用例相匹配的一個。難道我做錯了什麼?

+0

我會用「提供」和最壞情況排除它(提示拖動沿着任何額外:使用命令mvn依賴:樹得到一個不錯的可視化爲你的依賴結構) – radai

+0

@radai。我需要Maven爲我下載依賴項。 '提供'做到了嗎? – peterh

+0

@radai'provided'將不起作用,因爲這與OP想要的相反。 'provided'的意思是「在編譯時需要,但在運行時不需要**」。 –

回答

0

你必須申報所有的傳遞依賴的排除:

<dependency> 
    <groupId>org.foo</groupId> 
    <artifactId>zeus</artifactId> 
    <version>1.1</version> 
    <type>zip</type> 
    <scope>compile</scope> 
    <exclusions> 
     <exclusion> 
      <groupId>org.foo</groupId> 
      <artifactId>transitive-dep-1</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>org.foo</groupId> 
      <artifactId>transitive-dep-2</artifactId> 
     </exclusion> 
     <!-- add all transitive deps. --> 
    </exclusions> 
</dependency> 
+1

謝謝。我想這可能是一個維護噩夢,因爲我必須跟蹤其他項目的依賴關係。我覺得我的用例很簡單,有些奇怪的是(顯然)沒有明顯的解決方案。我只想依靠一個拉鍊神器......這有多難? (每當我發現自己像這樣思考的時候,我總是試圖讓自己置身於鏡子之中,並認爲或許我誤解了Maven概念?) – peterh

+0

由於各種原因,我正在使用這個解決方案(儘管維護噩夢,因爲我看到它),而不是像其他地方所建議的那樣使用陰影插件。謝謝。 – peterh