参考博客:
1.springboot项目打jar包的方法
2.java -jar XXX.jar 没有主清单属性以及找不到或无法加载主类的问题
一、配置springboot-maven插件
<?xml version="1.0" encoding="UTF-8"?>
<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>org.example</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<name>demo</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- 引入springboot依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.6.3</version>
</dependency>
</dependencies>
<build>
<!-- 引入打包插件 -->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.2.4.RELEASE</version>
<executions>
<!--
说明:spring-boot-maven插件的repackage(goal)有如下两个作用:
1、在原始Maven打包形成的jar包基础上,进行重新打包,新形成的jar包不但包含应用类文件和配置文件,而且还会包含应用所依赖的jar包以及Springboot启动相关类(loader等),以此来满足Springboot独立应用的特性;
2、将原始Maven打包的jar重命名为XXX.jar.original作为原始文件;
如果不加repackage,java -jar XXX.jar会报错:没有主清单属性以及找不到或无法加载主类
-->
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
二、打包
在打包后会在target目录下同时会生成两个文件:.jar 文件 和 .jar.original
.jar.original: 是普通jar包,不包含依赖。
.jar: 是可执行jar包,包含了pom中的所有依赖,可以直接用java -jar 命令执行
如果是部署,就用 .jar;如果是给别的项目用,就要给 .jar.original这个包
三、部署
上传到linux,然后执行
nohup java -jar xxx.jar &