- 1. 可执行jar理解
- 2. 几种常见方案
- 2.1 使用maven-jar-plugin和maven-dependency-plugin
- 2.2 使用maven-assembly-plugin
- 2.3 使用maven-shade-plugin
直接使用mvn package对项目进行打包时,如果使用java -jar xxx.jar运行jar文件,会出现"no main manifest attribute, in xxx.jar"(没有设置Main-Class)、ClassNotFoundException(找不到依赖包)等错误。
要想jar包能直接通过java -jar xxx.jar运行,必要条件是:
1、在jar包中的meta-INF/MANIFEST.MF中指定Main-Class,这样才能确定程序的入口在哪里;
2、要能加载到依赖包。
2. 几种常见方案
注: 本章所有源代码均在: https://gitee.com/shuanglin666/mvn-build-exe-jar
- pom文件plugin配置
其中maven-jar-plugin用来打成jar包, 指定mainClass位置等
maven-dependency-plugin用来将依赖也打动包里面, 并且能被mainsClass识别.
如果需要详细了解打包结构, 可以将jar包unzip解压查看.
org.apache.maven.plugins maven-jar-plugin 2.6 true lib/ com.wsl.test.mvn.build.jar.dep.BootStrap1 org.apache.maven.plugins maven-dependency-plugin 2.10 copy-dependencies package copy-dependencies ${project.build.directory}/lib
-
执行mvn clean package打包
-
运行jar包
java -jar java -jar mvn-jar-and-dep-1.0-SNAPSHOT.jar
2.2 使用maven-assembly-plugin
- pom文件plugin配置
org.apache.maven.plugins maven-assembly-plugin 3.1.1 com.wsl.test.mvn.build.assembly.BootStrap2 jar-with-dependencies make-assembly package single
-
执行mvn package打包
-
运行jar包
java -jar mvn-assembly-1.0-SNAPSHOT-jar-with-dependencies.jar
2.3 使用maven-shade-plugin
- pom文件plugin配置
org.apache.maven.plugins maven-shade-plugin 2.4.1 package shade com.wsl.test.mvn.build.shade.BootStrap3
-
运行mvn clean package打包
-
运行jar
java -jar mvn-shade-1.0-SNAPSHOT.jar



