使用MVN将整个应用程序和所有java依赖项打包成1个大jar的2018年最佳实践是什么,以便可以在任何计算机上执行(使用JRE)?
我见过这个:
<plugin>
<groupId>de.ntcomputer</groupId>
<artifactId>executable-packer-maven-plugin</artifactId>
<version>1.0.1</version>
<configuration>
<mainClass>com.example.MyMainClass</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>pack-executable-jar</goal>
</goals>
</execution>
</executions>
</plugin>
我也看到了类似的东西:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.ntcomputer</groupId>
<artifactId>executable-packer-maven-plugin-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>de.ntcomputer</groupId>
<artifactId>executable-packer-maven-plugin</artifactId>
<version>1.0.1</version>
<configuration>
<mainClass>de.ntcomputer.executablepacker.test.Test</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>pack-executable-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.examlpe</groupId>
<artifactId>example-dependency</artifactId>
<version>1.2.0</version>
</dependency>
</dependencies>
</project>
或通过Shade插件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.group.id.Launcher1</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
也可能有其他方法......
其中一些是旧的(例如5年前推荐)并且不确定它们是否仍然有效/维护/推荐。
在所有这些选择中(或此处未提及的其他选项) - 在2018年为Java 8打包所有内容的建议和最佳实践是什么?
如果有人可以通过'HelloWorld'java文件,相应的POM文件和MVN命令来运行/创建带有依赖关系的jar,然后命令执行一个制作的jar,那么可以给予奖励。
感谢。