如何解决Maven Shade重叠类警告
我在项目中使用commons-io并希望对其进行阴影处理。我遇到警告,似乎无法弄清:
[WARNING] commons-io-2.7.jar,murder-1.0-SNAPSHOT.jar define 180 overlapping classes and resources:
...
我发现这很奇怪,因为murder-1.0-SNAPSHOT.jar
是我要构建的jar,其中应包含commons-io jar。
我这样定义commons-io依赖项:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.7</version>
<scope>compile</scope>
</dependency>
(我以为我应该使用runtime
范围,但后来我无法运行package
,因为它抱怨找不到FileUtils
)
这是我的阴影插件的配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<includes>
<include>commons-io:commons-io</include>
</includes>
</artifactSet>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>meta-inf/MANIFEST.MF</exclude>
<exclude>meta-inf/*.SF</exclude>
<exclude>meta-inf/*.DSA</exclude>
<exclude>meta-inf/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
如果我完全删除<filters>
,只会收到以下警告:
commons-io-2.7.jar,murder-1.0-SNAPSHOT.jar define 1 overlapping resource
[WARNING] - meta-inf/MANIFEST.MF
一切似乎仍然可以正常运行,但是我想在打包时摆脱此警告。
编辑:
如果我先运行mvn clean
,则下一个mvn package
不会产生这样的警告。随后的运行将再次引入警告。
解决方法
最后,这就是我最终得到的结果,它似乎有效并且不产生任何警告:
<properties>
<!-- replace this with wherever you want your shaded dependencies to end up -->
<shaded-dependencies>io.vapidlinus.shade</shaded-dependencies>
</properties>
....
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<includes>
<include>commons-io:commons-io</include>
</includes>
</artifactSet>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>module-info.class</exclude>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.MF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>META-INF/**</exclude>
</excludes>
</filter>
</filters>
<relocations>
<relocation>
<pattern>org.apache.commons.io</pattern>
<shadedPattern>${shaded-dependencies}.org.apache.commons.io</shadedPattern>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。