IDEA配置gradle打包生產環境和測試環境分離
阿新 • • 發佈:2019-01-27
本文前半段摘抄自:https://ixiaozhi.com/java-gradle-archive-different-profile/
後面是自己所寫
配置 Gradle 配置檔案
build.gradle 中配置相關的 resources 配置檔案的目錄。不同的資原始檔放置在 src/main/filters/$env
目錄下,其中
$env 目錄為環境名,例如:dev、test、product 等等。且定義了預設環境為 dev 環境。
def env = System.getProperty("profile") ?: "dev" sourceSets { main { resources { srcDirs = ["src/main/resources", "src/main/filters/$env"] } } }
在使用 Gradle 編譯的時候,新增引數 -Dprofile=dev
來指定編譯的最終程式碼為何環境。如:
# 把程式編譯成生產環境
./gradlew bootRepackage -Dprofile=product
使用 Intellij IDEA 啟動不同的Gradle
環境
A、先新建一個product的gradle Run/Debug Configuratios,然後Tasks注意選擇war,經過測試大部分都不行,目前只發現war可以,Script paramters中-Dprofile=product,-D是系統,profile=product是指定為生產環境,與上面的資料夾對應
Gradle支援三種Properties, 這三種Properties的作用域和初始化階段都不一樣,下面分別列出了其部分特點。:
-
System Properties:
- 可通過gradle.properties檔案,環境變數或命令列-D引數設定 2. 可在setting.gradle或build.gradle中動態修改,在setting.gradle中的修改對buildscript block可見;
- 所有工程可見,不建議在build.gradle中修改
- 多子工程專案中,子工程的gradle.properties會被忽略掉,只有root工程的gradle.properties有效;
-
Project Properties:
- 可通過gradle.properties檔案,環境變數或命令列-P引數設定,優先順序是:
- 可在build.gradle中動態修改,但引用不存在的project properties會立即拋錯
- 動態修改過的project properties在buildscript block中不可見
-
Project ext properties:
- 可在專案的build.gradle中宣告和使用,本工程和子工程可見
- 不能在setting.gradle中訪問
C、執行tomcat即可
優化打包:
每次執行gradle進行war打包,並輸入引數test
可以看到libs裡面的resources的properties裡面的配置就會跟著相應改變