【问题标题】:Superfluous warnings when using maven-shade-plugin使用 maven-shade-plugin 时的多余警告
【发布时间】:2012-02-11 09:57:29
【问题描述】:

我正在将 maven-shade-plugin 用于一个简单的 maven 项目,该插件成功地将所有依赖项包含到最终的“阴影”jar 中。该过程每次都运行良好,并且完全符合我的需要。

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

[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 非常好用且简单。

【问题讨论】:

  • 我假设报告的重复项都是依赖类,对吧?在这种情况下,它们很可能首先被提取到某个文件夹,因此您可能希望在打包阶段之前或之后为这些文件夹添加一个干净的步骤(取决于您在构建之间是否需要这些类)。
  • 我有与上述相同的问题...如何抑制警告。就我而言,我包含了来自我无法控制的众多 Spring 包 jar 的依赖项 - 即我之前无法“清理”。
  • 这正是我的问题! Oh dear!
  • 您使用的是哪个版本的maven-shade-plugin?似乎在 maven.40175.n5.nabble.com/… 的版本中存在类似的错误

标签: java maven 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>

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

【讨论】:

  • 谢谢。还有另一种方法可以让插件使用original jar?我不明白maven-jar-pluginmaven-shade-plugin 之间的动态
  • 我想补充一点,如果您还使用 Maven Shade 创建着色源 JAR,您还希望为相应模块的 Maven 源插件添加相同的 &lt;forceCreation&gt;true&lt;/forceCreation&gt; 选项。
猜你喜欢
  • 2019-03-04
  • 2014-09-05
  • 1970-01-01
  • 2013-08-19
  • 2013-02-19
  • 2014-11-04
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
相关资源
最近更新 更多