我花了很多时间弄清楚如何调用Maven阴影插件来构建uber-jar(具有所有依赖项)。
我发现的大多数可谷歌搜索的信息(包括大量示例和Maven文档)表明,我要做的就是将插件包含在pom.xml中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
然后“ mvn软件包”(或最终调用“软件包”的任何其他目标)将自动触发此插件。
但是,不管我尝试了什么-实际调用该插件的唯一方法似乎是:运行“ mvn软件包shade:shade”(这似乎违反了配置驱动的构建的目的)。无论是从Eclipse(STS版本:3.8.2.RELEASE)中还是从命令行(Apache Maven 3.3.9)运行Maven,结果都是相同的。
我有什么想念的吗?
UPD:已解决,请参阅GauravJ的回答。
最佳答案
我设法重现了您的问题。在pom.xml中,您必须定义如下的插件,
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
....
</plugins>
</pluginManagement>
</build>
代替
<build>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</build>
这可能会解决您的问题。
关于maven - 目标“包”不会自动调用Maven阴影插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42208526/