【问题标题】:Disable additional jars for the maven-shade-plugin禁用 maven-shade-plugin 的附加 jars
【发布时间】:2015-08-01 16:44:50
【问题描述】:

我正在使用 maven-shade-plugin 创建单个可执行 jar。 我希望插件在目标目录中创建一个 jar (foo.jar)。 但是它也会创建另外两个 jar:original-foo.jarfoo-shaded.jar

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

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

【问题讨论】:

    标签: maven maven-shade-plugin


    【解决方案1】:

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

    【讨论】:

    • 一个恼人的问题是你不能使用target/${project.artifactId}-${project.version}.jar
    • maven 包显示“创建阴影 jar 时出错:打开 zip XXX 时出错”,因为输出 jar 已损坏
    【解决方案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>
    

    【讨论】:

    • 这有助于摆脱 foo-shaded.jar 文件,但仍会生成 original-foo.jar 文件。我也很好奇为什么其他项目没有生成foo-shaded.jar尽管缺少上述配置。
    • 这并没有为我删除任何罐子。
    猜你喜欢
    • 2014-09-05
    • 2019-03-04
    • 1970-01-01
    • 2013-08-19
    • 2013-02-19
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 2019-08-14
    相关资源
    最近更新 更多