IDEA POM文件配置profile實(shí)現(xiàn)不同環(huán)境切換的方法步驟
一、背景
在企業(yè)級(jí)開(kāi)發(fā)中,為了不影響生產(chǎn)環(huán)境的項(xiàng)目運(yùn)行,一般情況下都會(huì)劃分生產(chǎn)環(huán)境、測(cè)試環(huán)境、開(kāi)發(fā)環(huán)境。不同環(huán)境可以配置不同的數(shù)據(jù)庫(kù)、redis連接,這樣在開(kāi)發(fā)新功能的時(shí)候就不會(huì)影響線上環(huán)境。
二、實(shí)現(xiàn)
2.1創(chuàng)建不同的配置文件
application.yml
spring: profiles: active: '@profiles.active@'
application-dev.yml
# 應(yīng)用服務(wù) WEB 訪問(wèn)端口 server: port: 8081 #數(shù)據(jù)庫(kù)連接 spring: datasource: #配置自己的賬戶(hù)密碼 username: xxx password: xxx url: jdbc:mysql://127.0.0.1:3306/my_app driver-class-name: com.mysql.cj.jdbc.Driver
application-test.yml
# 應(yīng)用服務(wù) WEB 訪問(wèn)端口 server: port: 8081 #數(shù)據(jù)庫(kù)連接 spring: datasource: #配置自己的賬戶(hù)密碼 username: xxx password: xxx url: jdbc:mysql://127.0.0.1:3306/my_app driver-class-name: com.mysql.cj.jdbc.Driver
application-prod.yml
# 應(yīng)用服務(wù) WEB 訪問(wèn)端口 server: port: 8081 #數(shù)據(jù)庫(kù)連接 spring: datasource: #配置自己的賬戶(hù)密碼 username: xxx password: xxx url: jdbc:mysql://127.0.0.1:3306/my_app driver-class-name: com.mysql.cj.jdbc.Driver
dev,test,prod可以分別配置不同的地址,以實(shí)現(xiàn)連接不同的數(shù)據(jù)庫(kù)。
2.2配置POM文件
<project> <build> <resources> <resource> <directory>src/main/resources</directory> <!--①移除全部配置文件--> <excludes> <exclude>application*.yml</exclude> </excludes> </resource> <resource> <directory>src/main/resources</directory> <!--②將所需的配置文件移入--> <filtering>true</filtering> <includes> <include>application.yml</include> <include>application-${profiles.active}.yml</include> </includes> </resource> </resources> </build> <!-- 環(huán)境 --> <profiles> <profile> <!--不同環(huán)境Profile的唯一id--> <id>dev</id> <properties> <!--profiles.active是自定義的字段(名字隨便起),自定義字段可以有多個(gè)--> <profiles.active>dev</profiles.active> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>prod</id> <properties> <profiles.active>prod</profiles.active> </properties> </profile> <profile> <id>test</id> <properties> <profiles.active>test</profiles.active> </properties> </profile> </profiles> </project>
配置文件里面有一小塊移除配置文件的代碼
如果將該代碼注掉,那么在打包項(xiàng)目的時(shí)候就會(huì)把全部配置文件都打包進(jìn)去,這樣拿到j(luò)ar包之后就可以在啟動(dòng)項(xiàng)目的時(shí)候通過(guò)傳入不同的參數(shù)來(lái)使用不同的配置文件啟動(dòng)項(xiàng)目,有點(diǎn)不安全。
如果不注掉的話,就會(huì)把全部配置文件都移除,在下方把指定的要打包的配置文件引入,這樣獲得的jar包就只能啟動(dòng)打包時(shí)候指定的配置文件,嘗試使用其他配置文件會(huì)獲取不到而報(bào)錯(cuò)。(建議)
三、效果
3.1本地使用
先在項(xiàng)目右上角的Profiles選中想要啟動(dòng)的環(huán)境,然后啟動(dòng)項(xiàng)目,端口和設(shè)置的配置文件匹配。
換個(gè)配置文件試試,端口和配置的文件也匹配,也是沒(méi)問(wèn)題。
PS:一般情況下,切換環(huán)境最好點(diǎn)一下下方的clean,先清一下緩存配置??赡苁乾F(xiàn)在配置少,現(xiàn)在本地不clean也沒(méi)問(wèn)題,但在企業(yè)開(kāi)發(fā)中如果不clean一下,啟動(dòng)項(xiàng)目大概率是會(huì)報(bào)錯(cuò)的。
2.2線上或者測(cè)試環(huán)境使用
線上或者測(cè)試環(huán)境一般都用jekins來(lái)自動(dòng)化打包運(yùn)行項(xiàng)目,也就是通過(guò)腳本去自動(dòng)運(yùn)行項(xiàng)目。
我們可以在項(xiàng)目目錄,通過(guò)命令行去打包項(xiàng)目mvn package -P 環(huán)境
mvn package -P prod
打包完成之后會(huì)在項(xiàng)目目錄下面生產(chǎn)一個(gè)target文件夾,里面有一個(gè)jar文件,這個(gè)文件就是打包的項(xiàng)目文件。(如果項(xiàng)目設(shè)置的打包是war的話,也可能是war文件。)
我們?nèi)サ絡(luò)ar文件所在目錄,通過(guò)命令行運(yùn)行jar文件
啟動(dòng)了8082端口,也正是prod文件配置的端口,驗(yàn)證完畢。
因?yàn)槲仪懊媸情_(kāi)啟了配置文件過(guò)濾的,驗(yàn)證一下用其他配置文件啟動(dòng)該jar包。(找不到配置文件而報(bào)錯(cuò),安全性得到了保障)
到此這篇關(guān)于IDEA POM文件配置profile實(shí)現(xiàn)不同環(huán)境切換的方法步驟的文章就介紹到這了,更多相關(guān)IDEA POM文件配置profile實(shí)現(xiàn)不同環(huán)境切換的方法步驟內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mockito 結(jié)合 Springboot 進(jìn)行應(yīng)用測(cè)試的方法詳解
這篇文章主要介紹了Mockito 結(jié)合 Springboot 進(jìn)行應(yīng)用測(cè)試的方法詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11java優(yōu)先隊(duì)列PriorityQueue中Comparator的用法詳解
這篇文章主要介紹了java優(yōu)先隊(duì)列PriorityQueue中Comparator的用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02學(xué)習(xí)java編程后可以走哪些職業(yè)道路
在本篇文章里給大家介紹了關(guān)于學(xué)習(xí)java后的職業(yè)道路,以及需要學(xué)習(xí)的相關(guān)知識(shí)內(nèi)容,有興趣的朋友們可以跟著學(xué)習(xí)下。2022-11-11ThreadLocal導(dǎo)致JVM內(nèi)存泄漏原因探究
ThreadLocal是JDK提供的線程本地變量機(jī)制,但若使用不當(dāng)可能導(dǎo)致內(nèi)存泄漏。正確的使用方式是在使用完后及時(shí)remove,或者使用弱引用等手段避免強(qiáng)引用導(dǎo)致的內(nèi)存泄漏。在多線程編程中,合理使用ThreadLocal可以提高并發(fā)性能,但也需要注意其潛在的內(nèi)存泄漏問(wèn)題2023-04-04Linux中使用shell腳本管理Java應(yīng)用程序
在日常開(kāi)發(fā)和運(yùn)維工作中,管理基于Java的應(yīng)用程序是一項(xiàng)基礎(chǔ)且頻繁的任務(wù),本文將通過(guò)一個(gè)示例腳本,展示如何利用Shell腳本簡(jiǎn)化這一流程,實(shí)現(xiàn)Java應(yīng)用的一鍵式啟動(dòng)、停止與重啟操作,本腳本不僅提升了工作效率,還確保了操作的標(biāo)準(zhǔn)化與可靠性2024-06-06AsyncConfigurerSupport自定義異步線程池處理異常
這篇文章主要為大家介紹了AsyncConfigurerSupport自定義異步線程池處理異常詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06