禁用maven-shade-plugin的其他jar

mic*_*has 11 maven maven-shade-plugin

我正在使用maven-shade-plugin创建一个可执行的jar.我希望插件foo.jar在目标目录中创建一个jar().然而,它还将创建另外两个罐子:original-foo.jarfoo-shaded.jar.

为什么创建这些文件以及如何禁用此行为?

(我们有另一个使用该插件的项目,其中没有创建这些文件.因此我很确定可以禁用它们,但我看不出其中的区别.)

Fra*_*rri 6

使用outputFile的插件maven-shade-plugin是通过其他行为来实现的:

 <plugin>

      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>

      ...

      <configuration>
           <outputFile>/tmp/watchdog.jar</outputFile>
      </configuration>

 </plugin>
Run Code Online (Sandbox Code Playgroud)

更多信息:https://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#outputFile


khm*_*ise 2

您可以查看maven-shade-pluginshadedArtifactAttached文档,该文档将为您提供一个控制您所描述的行为的选项。

<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>
Run Code Online (Sandbox Code Playgroud)

  • 这有助于摆脱“foo-shaded.jar”文件,但仍然会生成“original-foo.jar”文件。我也很好奇为什么另一个项目没有生成“foo-shaded.jar”,尽管缺少上述配置。 (10认同)