springboot+maven多環(huán)境動態(tài)配置及編譯失敗的解決方案(步驟詳解)
一、前言
在我們的項目開發(fā)過程中一般會有多套的環(huán)境,比如比較常見的會有三套: dev (研發(fā)環(huán)境),test(測試環(huán)境),prod(生產(chǎn)環(huán)境)。
application.yml 是主配置文件,當(dāng)在不同的環(huán)境中需要激活不同環(huán)境的配置文件,改動active 后面的value即可。但是這種方式有個弊端,需要每次手動改動才生效,不靈活,有沒有一個比較簡便的方式呢?其實maven給我們提供一種在編譯階段時動態(tài)修改激活環(huán)境的參數(shù)的方法。
二、springboot+maven多環(huán)境動態(tài)配置
其實很簡單,只需要2步即可
2.1 修改application.yml
application.yml 中的active哪一行改成:
spring: profiles: active: @profiles.active@
2.2 maven中添加profile配置
<!-- 添加到根project標(biāo)簽的下一級 --> <profiles> <!-- 本地開發(fā)環(huán)境(默認(rèn)) --> <profile> <id>dev</id> <properties> <!-- 自由命名,這個值會在application.yml的"@profiles.active@"取到 --> <profiles.active>dev</profiles.active> </properties> <!-- 默認(rèn)激活dev環(huán)境--> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <!-- 測試環(huán)境 --> <profile> <id>test</id> <properties> <profiles.active>test</profiles.active> </properties> </profile> <!-- 生產(chǎn)環(huán)境 --> <profile> <id>prod</id> <properties> <profiles.active>prod</profiles.active> </properties> </profile> </profiles>
在maven中加完以上配置,就可以在idea 的右側(cè)看到dev的配置已經(jīng)激活。
點擊小錘子進(jìn)行編譯,會發(fā)現(xiàn)application.yml中的 @profiles.active@ 編譯完以后 就被替換成 dev
2.3 編譯時如何動態(tài)切換呢
方法一:通過idea的可視化界面進(jìn)行操作
方案二:通過maven 編譯命令指定參數(shù)
mvn compile -P prod
可以看到編譯完成以后的文件 active 已經(jīng)變成 prod 了。
2.4 無法編譯成功或正常啟動的解決方案
使用 idea的小錘子進(jìn)行編譯。或者直接啟動項目可能會出現(xiàn) 無法替換掉 application.yml 中active: @profiles.active@,建議使用 2.3 中的 方案一和方案二進(jìn)行編譯,編譯成功以后,只要不執(zhí)行maven clean 命令則就一直能用。
到此這篇關(guān)于springboot+maven多環(huán)境動態(tài)配置及編譯失敗的解決方案的文章就介紹到這了,更多相關(guān)springboot maven多環(huán)境動態(tài)配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java的方法和this關(guān)鍵字如何理解與應(yīng)用
Java語言中的“方法”(Method)在其他語言當(dāng)中也可能被稱為“函數(shù)”(Function)。對于一些復(fù)雜的代碼邏輯,如果希望重復(fù)使用這些代碼,并且做到“隨時任意使用”,那么就可以將這些代碼放在一個大括號{}當(dāng)中,并且起一個名字。使用代碼的時候,直接找到名字調(diào)用即可2021-10-10Springboot整合easyexcel實現(xiàn)一個接口任意表的Excel導(dǎo)入導(dǎo)出
本文主要介紹了Springboot整合easyexcel實現(xiàn)一個接口任意表的Excel導(dǎo)入導(dǎo)出,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02java利用mybatis攔截器統(tǒng)計sql執(zhí)行時間示例
這篇文章主要介紹了java利用mybatis攔截器統(tǒng)計sql執(zhí)行時間示例,該攔截器攔截mybatis的query和update操作,能統(tǒng)計sql執(zhí)行時間2014-03-03Java實現(xiàn)隨機(jī)生成大小寫混合的卡密的步驟
在現(xiàn)代軟件開發(fā)中,生成隨機(jī)卡密是一個常見的需求,尤其是在需要為用戶生成唯一識別碼或安全令牌的場景中,卡密通常由數(shù)字和字母組成,有時還會包含特殊字符,本文通過代碼講解的非常詳細(xì),需要的朋友可以參考下2024-11-11JAVA 格式化JSON數(shù)據(jù)并保存到j(luò)son文件中的實例
這篇文章主要介紹了JAVA 格式化JSON數(shù)據(jù)并保存到j(luò)son文件中的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10Java elasticSearch-api的具體操作步驟講解
這篇文章主要介紹了elasticSearch-api的具體操作步驟講解,本文通過詳細(xì)的步驟介紹和圖文代碼展示講解了該項技術(shù),需要的朋友可以參考下2021-06-06