2017-04-03 122 views
2

新暴露Maven的,我能理解<exclusion>標籤的使用情況,但不知道爲什麼它不會造成編譯錯誤:爲什麼Maven依賴排除不會導致編譯錯誤?

<dependencies> 
<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-embedder</artifactId> 
    <version>2.0</version> 
    <exclusions> 
    <exclusion> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-core</artifactId> 
    </exclusion> 
    </exclusions> 
</dependency> 
... 

這是唯一可能的,只有當你對maven-core有另一個直接的依賴關係?否則,應該發生編譯錯誤。 (假設maven-coremaven-embedder地方使用)

回答

1

有不同的可能性:

  1. 正如卡爾說:檢查dependency:tree如果依賴是不是從別的地方拉入。
  2. 即使maven-embedder確實使用它,也可能完全不使用maven-core:假設例如maven-embedder有兩個A和B類。您只使用A,但maven-core僅由B使用。然後(如果A和B彼此不使用),您的項目可能完全獨立於maven-core。 (一方面的評論:有些罐子在邏輯上應該是兩個獨立的罐子,但是無論什麼原因合併在一起 - 在我們的例子中,應該考慮將A和B放入單獨的工件中)。
  3. 傳遞依賴在編譯時是不必要的,但在運行時使用。
0

的錯誤不會在編譯的時候拋出,它會在運行時拋出,如果你使用任何功能依賴於Maven的核心

相關問題