SpringBoot實(shí)現(xiàn)動(dòng)態(tài)配置及項(xiàng)目打包部署上線功能
寫(xiě)在前面
本文講解的是如何使用Spring動(dòng)態(tài)配置文件,實(shí)現(xiàn)不同環(huán)境不同配置,靈活切換配置文件;以及講述了如何使用 Maven 打包,然后上傳至Linux服務(wù)器進(jìn)行部署。(PS:如果你是新手,可以跟著系列專(zhuān)欄的框架搭建先動(dòng)手把項(xiàng)目搭建起來(lái),然后在結(jié)合本期內(nèi)容繼續(xù)深入學(xué)習(xí),這樣會(huì)有更好的效果。)
一、動(dòng)態(tài)配置文件

在定制鏡像前,我們需要了解Spring動(dòng)態(tài)指定配置文件的方式,來(lái)提高我們的部署效率。
1.1、概述
在實(shí)際企業(yè)開(kāi)發(fā)中,開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境通常采用不同的數(shù)據(jù)庫(kù)等中間件的連接方式。如果此時(shí)我們按照目前的方式,只有一個(gè)application.yml配置文件,那么我們?cè)诓煌h(huán)境下啟動(dòng)項(xiàng)目,都需要更改配置文件中的各種連接信息,雖然目前我們需要更改的連接地址少,但是每次去手動(dòng)的更改這些信息,人工改的話是非常容易改錯(cuò)的。
Spring 提供了可以指定配置文件啟動(dòng)的方式,這樣使得我們可以靈活的切換配置文件。
目前項(xiàng)目中也使用了這個(gè)指定配置文件的方式,只不過(guò)是在配置文件中指定的。代碼如下圖:

我們要做的是,在啟動(dòng)的時(shí)候指定。我們需要復(fù)制配置文件application.yml和application-druid.yml,命名為application-prod.yml和application-druid-prod.yml,用來(lái)區(qū)分開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境,多個(gè)環(huán)境同理。
不指定配置文件,默認(rèn)讀取application.yml,我們開(kāi)發(fā)的時(shí)候,可以直接啟動(dòng)項(xiàng)目。我們也可以分出一個(gè)dev的配置,這個(gè)看個(gè)人開(kāi)發(fā)習(xí)慣。
1.2、啟動(dòng)方式
1.2.1、jar包啟動(dòng)
在區(qū)分出了生產(chǎn)環(huán)境的配置后,我們通過(guò)jar包方式啟動(dòng)項(xiàng)目的時(shí)候,增加參數(shù)指定,可以在啟動(dòng)項(xiàng)目的時(shí)候,指定配置文件。代碼如下:
java -jar xxx.jar --spring.profiles.active=prod,druid-prod
注意:
指定多個(gè)配置文件,使用
,號(hào)分割。啟動(dòng)項(xiàng)目的時(shí)候指定了配置文件,在
yml中配置的 spring.profiles.active 會(huì)失效
1.2.2、IDEA啟動(dòng)配置
- 在 IDEA 中配置profiles是非常簡(jiǎn)單的。
- 點(diǎn)擊 IDEA 上方菜單Run
- 選擇Edit Configurations...
- 選擇Spring Boot下的 MyProjectServerApplication
- 找到Active profiles輸入框,輸入需要指定的配置文件后綴。例如:prod,druid-prod
- 點(diǎn)擊OK即可。
如下圖:


配置好后,使用IDEA啟動(dòng)項(xiàng)目,就會(huì)自動(dòng)指定配置文件了。不需要的時(shí)候,直接刪掉保存就可以了。
二、項(xiàng)目打包
我們?cè)谏a(chǎn)環(huán)境運(yùn)行的時(shí)候,是使用jar的方式啟動(dòng)的。這里就需要我們將我們的項(xiàng)目打成jar,然后把項(xiàng)目運(yùn)行起來(lái)。
項(xiàng)目結(jié)構(gòu)如下:
| 模塊 | 用途 |
|---|---|
my-project-dependencies | 統(tǒng)一的依賴管理 |
my-project-common | 通用模塊 |
my-project-generator | 代碼生成器 |
my-project-server | 項(xiàng)目服務(wù)模塊 |
本次構(gòu)建的項(xiàng)目服務(wù)模塊my-project-server依賴my-project-dependencies和my-project-common。所以需要先把這兩個(gè)模塊install安裝到本地,以便my-project-server打包的時(shí)候,可以依賴到這兩個(gè)模塊。
項(xiàng)目打包的方式有多種,這里就簡(jiǎn)單介紹常用的兩種方式。
2.1、IDEA打包
IDEA 打包方法:
- 點(diǎn)擊右側(cè)
Maven菜單 - 雙擊打開(kāi)要操作的模塊
- 點(diǎn)擊
Lifecyle - 雙擊需要進(jìn)行的操作。例如:clean、install、package
如下圖:

步驟:
- install安裝my-project-dependencies
- install安裝my-project-common
- package打包my-project-server
2.2、Maven命令打包
步驟還是跟上個(gè)方式的步驟一致,不一樣的是使用Maven命令,這里借助bat的方式,一次完成。
在模塊同濟(jì)目錄下創(chuàng)建一個(gè)bin目錄后,創(chuàng)建批處理文件package.bat。代碼如下:
cd .. cd my-project-dependencies call mvn install cd .. cd my-project-common call mvn clean install -Dmaven.test.skip=true cd .. cd my-project-server call mvn clean package -Dmaven.test.skip=true cd ..
打包時(shí),只需要執(zhí)行bin目錄下的package.bat文件即可完成打包。
-Dmaven.test.skip=true 意思為跳過(guò)測(cè)試。項(xiàng)目打包過(guò)程中,會(huì)執(zhí)行我們編寫(xiě)的測(cè)試類(lèi)。我們?cè)谌粘m?xiàng)目開(kāi)發(fā)過(guò)程中,或多或少會(huì)寫(xiě)測(cè)試類(lèi),這個(gè)參數(shù)就可以在打包的時(shí)候,跳過(guò)測(cè)試類(lèi)的執(zhí)行。
三、項(xiàng)目部署
打包完成后,會(huì)在項(xiàng)目的target目錄下生成一個(gè)項(xiàng)目的jar包,這個(gè)就是我們最終運(yùn)行的程序了。如圖所示:

3.1、安裝環(huán)境
打包完成后,我們會(huì)將程序上傳至服務(wù)器進(jìn)行運(yùn)行,服務(wù)器需要安裝Java運(yùn)行環(huán)境。
1)、下載
下載地址:
https://www.oracle.com/java/technologies/downloads/#java8
找到Linux版本進(jìn)行下載,可能需要登錄,登錄下載即可。

2)、創(chuàng)建目錄
mkdir -p /usr/local/java
3)、上傳文件至該目錄

$ ls -al total 144704 drwxr-xr-x 2 root root 4096 Oct 5 15:19 ./ drwxr-xr-x 14 root root 4096 Oct 5 15:18 ../ -rw-r--r-- 1 root root 148162542 Oct 5 15:19 jdk-8u341-linux-x64.tar.gz
4)、解壓縮
tar -zxvf jdk-8u341-linux-x64.tar.gz
5)、配置系統(tǒng)變量
vim /etc/environment
添加如下語(yǔ)句
export JAVA_HOME=/usr/local/java/jdk1.8.0_341 export JRE_HOME=/usr/local/java/jdk1.8.0_341/jre export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
6)、配置用戶環(huán)境變量
vim /etc/profile
添加如下語(yǔ)句
export JAVA_HOME=/usr/local/java/jdk1.8.0_341 export JRE_HOME=/usr/local/java/jdk1.8.0_341/jre export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
環(huán)境變量生效
source /etc/profile
7)、測(cè)試
$ java -version java version "1.8.0_341" Java(TM) SE Runtime Environment (build 1.8.0_341-b10) Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode)
出現(xiàn)正常的版本號(hào),說(shuō)明安裝成功啦~
3.2、項(xiàng)目啟動(dòng)
創(chuàng)建目錄
mkdir -p /usr/local/apps/my-project
將之前項(xiàng)目打包的jar包上傳至該目錄

啟動(dòng)項(xiàng)目有多種方式
前臺(tái)啟動(dòng)一,這種方式啟動(dòng),會(huì)在窗口上輸出啟動(dòng)日志,如果關(guān)閉窗口或者Ctrl+C,會(huì)終止程序。
java -jar my-project-server-1.0.0-SNAPSHOT.jar
前臺(tái)啟動(dòng)二,這種方式啟動(dòng),也會(huì)在窗口上輸出啟動(dòng)日志,如果Ctrl+C,程序依然正常運(yùn)行。
java -jar my-project-server-1.0.0-SNAPSHOT.jar &
后臺(tái)啟動(dòng),這種方式,不會(huì)再窗口上輸出啟動(dòng)日志,如果關(guān)閉窗口程序依然正常運(yùn)行。推薦
nohup java -jar my-project-server-1.0.0-SNAPSHOT.jar &
3.3、最終效果
啟動(dòng)后,訪問(wèn)http://IP:8899/sys-user/get/all,即可訪問(wèn)查詢所有用戶接口

到此這篇關(guān)于SpringBoot實(shí)現(xiàn)動(dòng)態(tài)配置及項(xiàng)目打包部署上線的文章就介紹到這了,更多相關(guān)SpringBoot打包部署上線內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot項(xiàng)目jar和war打包部署方式詳解
- springboot實(shí)現(xiàn)maven多模塊和打包部署
- Jenkins一鍵打包部署SpringBoot應(yīng)用的方法步驟
- Springboot打包部署修改配置文件的方法
- SpringBoot瘦身打包部署的實(shí)現(xiàn)
- Springboot打包部署代碼實(shí)例
- springboot打包部署到linux服務(wù)器的方法
- springboot 打包部署 共享依賴包(分布式開(kāi)發(fā)集中式部署微服務(wù))
- SpringBoot + Vue 項(xiàng)目部署上線到Linux 服務(wù)器的教程詳解
相關(guān)文章
解析Java中的定時(shí)器及使用定時(shí)器制作彈彈球游戲的示例
這篇文章主要介紹了Java中的定時(shí)器及使用定時(shí)器制作彈彈球游戲的示例,文中同時(shí)也分析了定時(shí)器timer的缺點(diǎn)及相關(guān)替代方案,需要的朋友可以參考下2016-02-02
SpringBoot升級(jí)到2.7.18后不兼容的地方及解決
這篇文章主要介紹了SpringBoot升級(jí)到2.7.18后不兼容的地方及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
IDEA2019.2.2配置Maven3.6.2打開(kāi)出現(xiàn)Unable to import Maven project
這篇文章主要介紹了IDEA2019.2.2配置Maven3.6.2打開(kāi)出現(xiàn)Unable to import Maven project,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Java實(shí)現(xiàn)簡(jiǎn)單的銀行管理系統(tǒng)的示例代碼
這篇文章主要介紹了如何利用Java實(shí)現(xiàn)簡(jiǎn)單的銀行管理系統(tǒng),可以實(shí)現(xiàn)存款,取款,查詢等功能,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-09-09

