我想排除Maven插件的直接依赖关系,this answer中描述的方法不起作用(如this comment所示)。
作为一个特例:
<build>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.2</version>
<!-- more config -->
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.2</version>
<exclusions>
<exclusion>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
我仍然在依赖项列表中看到javax.xml.bind:jaxb-api
(使用mvn ... -X
)。我做错了什么?
(如果有人知道如何用该API的JDK 9等效替换该工件的依赖性[似乎发生在Java 8上,其中&#34; JAXB API os从[jar: ... jre / lib / rt.jar]&#34;],我很乐意为此开一个新问题。)
无论如何,这都是一个实验,我通过编辑本地存储库中的插件pom.xml
来排除依赖关系。现在mvn ... -X
表明我还可以通过上述机制成功排除间接依赖(在本例中为org.jvnet.jaxb2.maven2:maven-jaxb22-plugin
)。从maven-jaxb2-plugin
和maven-jaxb22-plugin
开始,只使用两种排除方式都无法解决问题。这表明排除通常有效,但显然不是插件的直接依赖。
(顺便说一句,这确实导致了#J; Java JAXB API从[jrt:/java.xml.bind]&#34;加载,这是我的目标。)
答案 0 :(得分:7)
到目前为止,没有任何理由这样做,但这似乎是有效的。我能想到的最干净的解决方案是允许使用“none”覆盖范围,以获得插件依赖性。
我为它创建了MNG-6222,不确定我们是否会为Maven3修复此问题,但至少在下一个主要版本中这样做是有道理的。
答案 1 :(得分:1)
使用依赖项检查依赖项列表:tree和solve WTF lib引入了lib依赖项,然后将其排除在其中。也许你的依赖不能直接。
我希望能帮到你。
编辑:只需按照您的依赖关系层次结构
答案 2 :(得分:1)