[From] https://blog.csdn.net/tearsky253/article/details/75948721
问题
在使用“mvn package”命令编译application之后,生成的.jar文件不能直接被“java -jar”命令运行,一般都是因为:
1. Manifest中没有主清单属性。 2. 依赖项在.jar文件中不存在。这两个问题可以通过在pom.xml中增加build plugin来解决。
方法1
使用maven-assembly-plugin来打包fat-jar。
假设我们的application的Main Class是practice.spring.sprice.App,那么我们需要在pom.xml中增加如下一段:
maven-assembly-plugin 3.0.0 practice.spring.sprice.App jar-with-dependencies make-assembly package single
这种方法打包出来的.jar中:
1. practice.spring.sprice.App会被作为主类。 2. 包含所依赖的所有jar的内容(这些jar包会被解开)。
方法2
使用spring-boot-maven-plugin来打包fat-jar。
在pom.xml中增加如下一段:org.springframework.boot spring-boot-maven-plugin 1.5.6.RELEASE repackage
这种方法打包出来的.jar中:
1. org.springframework.boot.loader.JarLauncher会被作为主类,它会自动调用应用程序中的main方法。 2. 包含所依赖的所有的jar包(这些jar包不会被解开)