Maven-shade-plugin无法跨多个运行工作

问题描述

maven-shade-plugin第一次运行,它是

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

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

修复插件行为的最简单方法是什么,这样就可以在没有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>