[英]How to make IntelliJ run a Spring Boot App with the Maven profile it's built with?
這讓我發瘋了——我有一個 Spring Boot 應用程序,它使用 Maven 作為其構建工具。 在 POM 中設置了各種配置文件,它們指向項目內相應目錄中的資源,因此如果您構建,例如,
mvn clean install -PBrandADev
您將獲得品牌 A 的 Dev 配置文件,以及相應的 application.properties 和其他配置文件,如果您使用
mvn clean install -PBrandBProd
您將獲得品牌 B 的生產資料。 這對我來說很重要,因為它控制着我要連接的 CMS,因此我可以通過構建為 Brand B Prod 來在調試中運行 Prod 環境的實例並查看出現錯誤或其他情況時出現的問題為我正在做的開發工作構建開發配置文件,插入開發 CMS。
由於它是 Spring 啟動應用程序,因此在每個配置文件的資源目錄中,我們有一個 banner.txt 文件,上面寫着“Brand A - Dev”或“Brand A - QA”或該配置文件的任何品牌和 CMS。
就在最近,我正在為一個特定的配置文件構建,例如我想要品牌 B 的 Preview-Prod 環境,我看到它何時啟動它的集成測試“Brand B - Preview-Prod”,這應該是預期的,但是當我使用屏幕頂部的運行/調試配置小部件中的應用程序配置項啟動它時,它開始顯示“Brand A - Dev”
我已經嘗試清理並重新安裝該應用程序。 我嘗試重新導入 maven 依賴項。 我嘗試使緩存無效並重新啟動 IDE。 我嘗試取消選擇所有配置文件並重新選擇我需要的配置文件。 沒有喜悅。 除了,就在今天早些時候,它起作用了,然后我嘗試切換回 Dev 環境,但它卡在了 Prod 上。 有誰知道我可以做些什么來強制它使用它構建的配置文件? 這是 IntelliJ 中的錯誤還是什么?
這種行為的一個可能原因可能是用於啟動應用程序的Run Configuration
,該應用程序在啟動應用程序之前使用默認配置文件構建它。 配置的Before Launch
驗證部分。
作為一種解決方法,為您要啟動的每個配置文件創建一個Run Configuration
,並在運行配置的 VM 選項中指定-Dspring.profiles.active=<PROFILE-NAME>
。 此外,您可以在啟動應用程序之前使用相同的配置文件構建應用程序,相應地調整Before Launch
部分。
您可以改用 spring-boot maven 插件。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
這允許您使用mvn spring-boot:run -PBrandADev
並使用正確的 maven 配置文件啟動 spring 引導應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.