我正在使用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>
答案 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>