如何在一个Java模块中生成2个jar:一个是uber jar,另一个是非uber jar?

时间:2018-09-06 09:27:45

标签: java maven maven-shade-plugin

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

1 个答案:

答案 0 :(得分:2)

Maven Shade插件,如果您运行shade目标,则默认情况下将产生两个JAR:

  • your-artifact.jar-Uber-JAR和
  • original-your-artifact.jar-原始的非Uber-JAR。

或者,您可以使用outputFile配置选项为Uber-JAR指定一个不同的名称(请参见下文)。 在这种情况下,您的“常规” 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。