[英]How to exclude a transitive dependency in Maven project
我有一個 java spring 引導應用程序 A 具有依賴項 B,它是第三方 jar。B 又具有依賴項 C。當人們需要升級 C(比如從 v1.0 到 v2.0)時,一種常見的方法是在 pom A的.xml,使用Maven排除功能從B中排除C,然后將C-v2.0聲明為直接依賴,或者將C-v2.0添加到dependencyManagement部分。
這種方法並不能保證在所有情況下都能正常工作。 一個例子是 org.glassfish.metro:webservices-rt:2.4.3 有依賴 woodstox-core:5.1.0 包含高安全漏洞,需要升級到 6.4.0。
我的項目 A 具有(直接)依賴性 webservices-rt:2.4.3。 應用上述方法不會從我的項目中排除 woodstox-core:5.1.0。 注意:maven 依賴樹不再顯示 woodstox-core:5.1.0,但 Aqua Scan 仍然指示 webservices-rt 具有依賴 woodstox-core:5.1.0。
下面是我的 pom 的一部分
<dependency>
<groupId>com.fasterxml.woodstox</groupId>
<artifactId>woodstox-core</artifactId>
<version>6.4.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.metro</groupId>
<artifactId>webservices-rt</artifactId>
<version>2.4.3</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.woodstox</groupId>
<artifactId>woodstox-core</artifactId>
</exclusion>
</exclusions>
</dependency>
在我看來,上述方法是否有效取決於 jar B 的打包方式。 有沒有人有知識可以分享?
<dependencyManagement>
中設置所需的版本,即<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.fasterxml.woodstox</groupId>
<artifactId>woodstox-core</artifactId>
<version>6.4.0</version>
</dependency>
</dependencies)
</dependencyManagement>
那么你根本不需要排除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.