禁用maven-shade-plugin的其他jar包

11

我正在使用maven-shade-plugin创建一个单独的可执行jar文件。

我期望该插件会在目标目录中创建一个单独的jar文件(foo.jar)。

但是它还会创建另外两个jar文件:original-foo.jarfoo-shaded.jar

为什么插件会创建这些文件,如何禁用此行为?

(我们有另一个使用该插件的项目,那里不会创建这些文件。因此,我非常确定可以禁用这些文件,但我看不出区别。)

2个回答

5

使用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


这是有关Maven Shade插件输出文件的详细信息。该链接提供了更多关于此插件及其使用的信息。

一个很烦人的问题就是你不能使用 target/${project.artifactId}-${project.version}.jar - flow2k
Maven打包时显示“创建Shaded Jar错误:打开zip XXX时出错”,这是由于输出的jar文件损坏所致。 - Qoobee

2
你可以查看maven-shade-plugin文档,该文档将为您提供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>

10
这有助于摆脱 foo-shaded.jar 文件,但仍会生成 original-foo.jar 文件。我还想知道为什么另一个项目没有生成 foo-shaded.jar,尽管缺少上述配置。 - michas
这对我没有删除任何jar文件。 - markthegrea

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接