2017-09-05 72 views
0

直到今天,我確信maven正在使用最近的依賴性贏得策略,但現在我不確定。最接近Maven戰略覆蓋的範圍? maven如何確定範圍?

我的項目包含這兩個以下的依賴:

 <dependency> 
      <groupId>TestA</groupId> 
      <artifactId>TestA</artifactId> 
      <version>1.0</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>TestB</groupId> 
      <artifactId>TestB</artifactId> 
      <version>1.0</version> 
     </dependency> 

兩個AB在他們的勁歌依賴C與範圍compile

因此,如果有人問我,我會得到什麼樣的版本和範圍的C在我的申請第一個答案我想出的是,依賴關係C得到通過TestA並將有test範圍,因爲兩者都在同一深度和TestA首先在pom中定義。但這是錯誤的。最後,我的申請將包含CTestB範圍compile。我沒有發現任何關於範圍如何媒介的內容。爲什麼發生這種情況?

回答

0

在Maven構建的編譯和包階段,沒有包含測試範圍的依賴關係。由於TestB依賴於TestC進行編譯,所以TestC被作爲傳遞依賴添加到您的項目中。

+0

這是不正確的,即使我提供了而不是測試,然後maven正在更新提供編譯。這似乎總是選擇最大的範圍。 – Hadson