我的項目包含一個jar文件,因爲它被列爲傳遞依賴項。Maven:刪除單個傳遞依賴項
但是,我已經驗證不僅我不需要它,但它會導致問題,因爲jar文件內的類會在另一個jar文件中影響我需要的類。
如何從傳遞性依賴關係中排除單個jar文件?
我的項目包含一個jar文件,因爲它被列爲傳遞依賴項。Maven:刪除單個傳遞依賴項
但是,我已經驗證不僅我不需要它,但它會導致問題,因爲jar文件內的類會在另一個jar文件中影響我需要的類。
如何從傳遞性依賴關係中排除單個jar文件?
您可以排除以下方式的依賴:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
您可以通過明確排除有問題的工件來做到這一點。採取包括問題的依賴,將其標記要排除:
從行家website:
<dependency>
<groupId>group-a</groupId>
<artifactId>artifact-a</artifactId>
<version>1.0</version>
<exclusions>
<exclusion>
<groupId>group-c</groupId>
<artifactId>excluded-artifact</artifactId>
</exclusion>
</exclusions>
</dependency>
的正確方法是使用排除機制,但是有時您可能更願意使用下面的hack來避免在大量工件具有相同的傳遞依賴關係時添加大量排除項,而這些傳遞性依賴關係是您希望忽略的。您可以定義一個「提供」範圍的附加依賴項,而不是指定排除項。這告訴Maven你將在運行時手動處理這個工件,所以它不會被打包。例如:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
副作用:你必須指定一個版的神器,要被忽略,它的POM將在編譯時進行檢索;定期排除情況並非如此。如果在防火牆後面運行私有的Maven存儲庫,這可能會成爲一個問題。
我一直試圖通過ole方法排除jar依賴關係中的servlet-api,並且這對我不起作用,但是嘗試了這種方法,它實現了這個竅門。謝謝。 –
Aaron
2011-01-28 15:10:18