首页 > 解决方案 > 如何在一个 java 模块中生成 2 个 jar:一个是 uber jar,另一个是非 uber jar?

问题描述

我知道我可以通过创建 2 个模块来实现它,但只想知道是否可以在一个模块中做到这一点?谢谢

标签: javamavenmaven-shade-plugin

解决方案


Maven Shade Plugin,如果你运行这个shade目标,默认会产生两个 JAR:

  • your-artifact.jar— Uber-JAR,以及
  • original-your-artifact.jar— 原始的非 Uber-JAR。

或者,您可以使用配置选项为 Uber-JAR 指定不同的名称outputFile(见下文)。在这种情况下,您的“普通”JAR 将具有“通常”的名称。

  <plugin>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.1.1</version>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <outputFile>${project.build.directory}/uberjar-name.jar</outputFile>
    </configuration>
  </plugin>

使用此配置,结果将是:

  • your-artifact.jar— 原始的非 Uber-JAR,以及
  • uberjar-name.jar— Uber-JAR。

推荐阅读