繁体   English   中英

Maven 战争插件问题

[英]Issue with Maven war Plugin

我正在使用 maven 打包我的 war 文件。 我有一些依赖项作为范围提供。 当我进行 maven 全新安装时,war 已成功创建,但具有提供的范围的 jar 的传递依赖项包含在我的 lib 目录中。 有什么办法可以去除它们吗?

示例场景:以下是我在 pom 中的依赖项之一

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>${resteasy.version}</version>
        <scope>provided</scope>
    </dependency>

这个包括 jar activation-1.1.jar。 resteasy-jaxrs 的依赖树也如下所示。

[INFO] +- org.jboss.resteasy:resteasy-jaxrs:jar:2.3.6.Final:provided
[INFO] |  +- org.jboss.resteasy:jaxrs-api:jar:2.3.6.Final:provided
[INFO] |  +- javax.annotation:jsr250-api:jar:1.0:compile
[INFO] |  +- javax.activation:activation:jar:1.1:compile
[INFO] |  +- org.apache.httpcomponents:httpclient:jar:4.1.2:provided
[INFO] |  |  \- org.apache.httpcomponents:httpcore:jar:4.1.2:provided
[INFO] |  \- net.jcip:jcip-annotations:jar:1.0:compile

最简单的方法是创建一个<dependencyManagement>标记并将子依赖项放入其中并将范围设置为提供:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>javax.annotation</groupId>
            <artifactId>jsr250-api</artifactId>
            <version>1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

这样你的传递依赖的范围就会被覆盖:

[INFO] |  +- javax.annotation:jsr250-api:jar:1.0:provided (scope managed from compile)
[INFO] |  +- javax.activation:activation:jar:1.1:provided (scope managed from compile)

在检查dependency:tree之前,一定要执行Maven-> Update Project并检查Force Update复选框。

如果我的库中有如此多的传递依赖项,则上述解决方案是不可能的。 终于得到了工作正常的 maven 排除。

<dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <version>${resteasy.version}</version>
            <scope>provided</scope>
            <exclusions>
                <exclusion>
                    <artifactId>*</artifactId>
                    <groupId>*</groupId>
                </exclusion>
            </exclusions>
        </dependency>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM