# 更换镜像源
# 打包成一个 jar 并部署
对于一般项目,可以在 pom.xml
中添加以下插件(注意修改 com.example.Main
为你的 main 函数所在类名):
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.example.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
运行 mvn clean install
即可生成 /target/ARTIFACTID-0.0.1-SNAPSHOT-jar-with-dependencies.jar
。
对于 Spring Boot 项目,由于其项目结构不同于普通项目,不能使用上述方法。
普通项目解包后的 /META-INF/MANIFEST.INF
:
Manifest-Version: 1.0
Created-By: Maven Archiver 3.5.0
Build-Jdk-Spec: 16
Main-Class: com.aurora.drivesyncer.AuroraDriveSyncerBackendApplication
Spring Boot 项目解包后的 /META-INF/MANIFEST.INF
:
Manifest-Version: 1.0
Created-By: Maven Jar Plugin 3.2.0
Build-Jdk-Spec: 16
Implementation-Title: Aurora-DriveSyncer-backend
Implementation-Version: 0.0.1-SNAPSHOT
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.aurora.drivesyncer.AuroraDriveSyncerBackendApplication
Spring-Boot-Version: 2.5.4
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Spring-Boot-Layers-Index: BOOT-INF/layers.idx
可见 Spring Boot 项目的 Main-Class
不是我们的 Main
,而是 Spring Boot 的 JarLauncher
。
Spring Boot 项目应当使用以下插件:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
运行 mvn clean install
即可生成 /target/ARTIFACTID-0.0.1-SNAPSHOT.jar
。
生成以后复制到服务器,然后在服务器 java -jar ARTIFACTID-0.0.1-SNAPSHOT.jar
即可。