我正在使用maven-shade-plugin创建一个单独的可执行jar文件。
我期望该插件会在目标目录中创建一个单独的jar文件(foo.jar
)。
但是它还会创建另外两个jar文件:original-foo.jar
和foo-shaded.jar
。
为什么插件会创建这些文件,如何禁用此行为?
(我们有另一个使用该插件的项目,那里不会创建这些文件。因此,我非常确定可以禁用这些文件,但我看不出区别。)
我正在使用maven-shade-plugin创建一个单独的可执行jar文件。
我期望该插件会在目标目录中创建一个单独的jar文件(foo.jar
)。
但是它还会创建另外两个jar文件:original-foo.jar
和foo-shaded.jar
。
为什么插件会创建这些文件,如何禁用此行为?
(我们有另一个使用该插件的项目,那里不会创建这些文件。因此,我非常确定可以禁用这些文件,但我看不出区别。)
使用outputFile的maven-shade-plugin插件可以绕过其他行为:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
...
<configuration>
<outputFile>/tmp/watchdog.jar</outputFile>
</configuration>
</plugin>
更多信息请参见:https://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#outputFile
shadedArtifactAttached
选项,该选项将控制您所描述的行为。<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>false</shadedArtifactAttached>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
foo-shaded.jar
文件,但仍会生成 original-foo.jar
文件。我还想知道为什么另一个项目没有生成 foo-shaded.jar
,尽管缺少上述配置。 - michas
target/${project.artifactId}-${project.version}.jar
。 - flow2k