使用 maven-shade-plugin 时出现多余的警告

2022-09-03 14:31:37

我正在使用maven-shade-plugin进行一个简单的maven项目,该插件成功地将所有依赖项包含在最终的“shaded”jar中。这个过程每次都运行良好,并产生我需要的东西。

当运行“第一次”时(在a之后),插件很安静并且产生很少的输出。但是,当重新运行时(没有上次构建的a),会有很多这样的警告消息;cleanclean

[WARNING] We have a duplicate package/a/b/foo.class
[WARNING] We have a duplicate package/c/d/bar.class

这只是警告消息,最终项目工作正常。

我的问题很简单:如何安全地解决或抑制这些警告消息,而不必先运行一个?clean


注意:一个可能的解决方案是移动到maven-assembly-plugin,但我宁愿不要这样做,因为maven-shade-plugin的配置非常好,很简单。


答案 1

这是因为它将文件着色到已经着色的jar中。

在清理后第一次运行包时,它将创建jar。第二次运行它时,它不会打扰,因为jar已经存在。

从阴影插件的角度来看,它不知道这已经被着色了,所以它只是尝试再次添加类。

我们可以通过配置jar插件来强制maven每次创建jar:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-jar-plugin</artifactId>
   <version>2.4</version>
   <configuration>
     <forceCreation>true</forceCreation>
   </configuration>
</plugin>

这对我有用。要么这样,要么只是做一个全新安装


答案 2

推荐