maven shade插件无法跨多次运行



maven-shade-plugin第一次运行时:

  1. 使用foobar.jar作为输入
  2. 输出foobar-shhaded.jar
  3. 将foobar.jar复制到original-foobar.jar
  4. 将foobar-shhaded.jar复制到foobar.jar

这允许maven-install-plugin拾取着色的JAR文件,并且每个人都很高兴。不幸的是,第二次运行构建时,maven-shade-plugin现在会将第一次运行的输出作为第二次的输入,最终会出现大量错误(例如,类/资源重叠(。

修复插件行为的最简单方法是什么,这样它就可以在没有mvn clean步骤的情况下重新运行?

最简单的解决方法是指示JAR插件运行,即使源文件没有更改。这将覆盖阴影JAR,maven-shade-plugin将执行正确的操作:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>default-jar</id>
<configuration>
<forceCreation>true</forceCreation>
</configuration>
</execution>
</executions>
</plugin>

最新更新