如何排除Maven插件的直接依赖关系
我想排除Maven插件的直接依赖,并且此答案中描述的方法不起作用(如本评论所示 )。
作为一个特例:
org.jvnet.jaxb2.maven2 maven-jaxb2-plugin 0.13.2 org.jvnet.jaxb2.maven2 maven-jaxb2-plugin 0.13.2 javax.xml.bind jaxb-api
我仍然在依赖项列表中看到javax.xml.bind:jaxb-api
(使用mvn ... -X
)。 我究竟做错了什么?
(如果有人知道如何用该API的JDK 9等效替换该工件的依赖性[似乎发生在Java 8上,其中“JAXB API os从[jar:… jre / lib]加载/rt.jar]“],我很高兴为此开一个新问题。)
更新
想法用完了,这仍然是一个实验,我通过在我的本地存储库中编辑插件的pom.xml
来排除依赖。 现在mvn ... -X
显示我还可以使用上面的机制成功排除间接依赖(在本例中为org.jvnet.jaxb2.maven2:maven-jaxb22-plugin
)。 只使用maven-jaxb2-plugin
和maven-jaxb22-plugin
两种排除方法都不行。 这表明排除一般起作用,但显然不是插件的直接依赖。
(顺便说一句,这确实导致“Java JAXB API从[jrt:/java.xml.bind]”加载,这是我的目标。)
到目前为止,没有任何理由这样做,但这似乎是一个有效的。 我能想到的最干净的解决方案是允许使用“none”覆盖范围,以获得插件依赖性。
我已经为它创建了MNG-6222 ,不确定我们是否会为Maven3修复它,但至少在下一个专业中这样做是有意义的。
我有一个与maven-linkcheck-plugin
类似的情况,最后我做了一个更powershell的方法来删除doxia-linkcheck
依赖,并通过分叉maven-linkcheck-plugin
并使用正确的依赖创建我自己的 fork来使用我的fork 。
使用依赖项检查依赖项列表:tree和solve WTF lib引入了lib依赖项,然后将其排除在其中。 也许你的依赖不可能是直接的。
我希望能帮助你。
编辑:只需遵循您的依赖层次结构