如何排除Maven插件的直接依赖关系

Nic*_*lai 13 java jaxb maven

我想排除Maven插件的直接依赖,并且此答案中描述的方法不起作用(如本评论所示).

作为一个特例:

<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>
Run Code Online (Sandbox Code Playgroud)

我仍然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-pluginmaven-jaxb22-plugin,不会做的伎俩.这表明排除通常起作用,但显然不是插件的直接依赖.

(顺便说一句,这确实导致"Java JAXB API从[jrt:/java.xml.bind]"加载,这是我的目标.)

Rob*_*lte 8

到目前为止,没有任何理由这样做,但这似乎是一个有效的.我能想到的最干净的解决方案是允许使用"none"覆盖范围,以获得插件依赖性.

我已经为它创建了MNG-6222,不确定我们是否会为Maven3修复它,但至少在下一个专业中这样做是有意义的.