Maven war插件问题

时间:2015-10-20 07:22:08

标签: java maven maven-3

我正在使用maven打包我的war文件。我有一些作为范围提供的依赖项。当我进行maven干净安装时,战争成功创建,但是我提供的lib目录中包含了提供范围的jar的传递依赖性。有没有办法删除它们?

示例场景:下面是我对pom

的依赖之一
  select g.FirstOrDefault().ManDays;

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

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

2 个答案:

答案 0 :(得分:1)

最简单的方法是创建一个<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)

在检查Maven-> Update Project之前,请务必执行Force Update并选中dependency:tree复选框。

答案 1 :(得分:0)

如果我的lib中有如此多的传递依赖项,上述解决方案是不可能的。最后得到了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>