本篇要點
- 介紹如何一步步將SpringBoot項目部署到遠程服務器上。
部署全流程
本文采用創建可執行jar的方式啟動SpringBoot項目。
1、配置maven插件
<packaging>jar</packaging> <!--打成jar包 -->
<build>
<!--打成jar包的名稱-->
<finalName>fireworks</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.5.RELEASE</version>
</plugin>
<plugin>
<!--排除測試類對打包的干擾-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
</plugins>
</build>
2、mvn package或mvn install
mvn package 和 mvn install的區別:
- package將會編譯代碼,並打包,最終按照maven規定的packaging方式打包,最終輸出到目標目錄中。
- install同樣也會編譯,並打包,但之后install還會將打好的包安裝在本地倉庫,供其他項目使用。
# 執行mvn clean,移除之前的target目錄
mvn clean
# 切換到項目路徑下,執行mvn package指令
mvn package
# 輸出日志
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ fireworks ---
[INFO] Building jar: D:\Java_Project\firework2.0\target\fireworks.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.3.5.RELEASE:repackage (repackage) @ fireworks ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
最終jar包輸出到D:\Java_Project\firework2.0\target\
目錄下。進入該目錄,會發現存在兩個文件:fireworks.jar
和fireworks.jar.original
。
fireworks.jar
就是我們所說的可執行的jar,包含已編譯的類和運行需要的所有jar依賴,如果你想看看里面有啥,可以通過如下命令:
$ jar tvf target/fireworks.jar
fireworks.jar.original
比前者小的多,這是Maven在Spring Boot進行repackage之前創建的原始jar文件,通過上面的命令,可以看到里面沒有運行需要的依賴,只包含我們定義的類編譯后的.class文件。
因此,如果我們想要啟動SpringBoot項目,需要使用可執行的jar,因為它具備所有的jar依賴,啟動命令如下:
$ java -jar fireworks.jar
3、將jar包上傳至遠程服務器
這里使用winSCP,無論使用哪種工具,只要能夠將文件上傳到遠程服務器上就可以。
4、在遠程服務器上執行jar包
nohup java -jar fireworks-0.0.1-SNAPSHOT.jar & # 后台啟動jar
注:如果之前啟動過項目,記得將原先那個進程關閉:
ps -ef|grep java
kill -9 pid