1. 程式人生 > >IDEA配置gradle打包生產環境和測試環境分離

IDEA配置gradle打包生產環境和測試環境分離

本文前半段摘抄自: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"]
        }
    }
}


alt

在使用 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的作用域和初始化階段都不一樣,下面分別列出了其部分特點。:

  1. System Properties:

    1. 可通過gradle.properties檔案,環境變數或命令列-D引數設定 2. 可在setting.gradle或build.gradle中動態修改,在setting.gradle中的修改對buildscript block可見;
    2. 所有工程可見,不建議在build.gradle中修改
    3. 多子工程專案中,子工程的gradle.properties會被忽略掉,只有root工程的gradle.properties有效;
  2. Project Properties:

    1. 可通過gradle.properties檔案,環境變數或命令列-P引數設定,優先順序是:
    2. 可在build.gradle中動態修改,但引用不存在的project properties會立即拋錯
    3. 動態修改過的project properties在buildscript block中不可見
  3. Project ext properties:

    1. 可在專案的build.gradle中宣告和使用,本工程和子工程可見
    2. 不能在setting.gradle中訪問


B、然後在tomcat中選擇Before launch中加入之前新建的gradle Configuration

C、執行tomcat即可

優化打包:


每次執行gradle進行war打包,並輸入引數test


可以看到libs裡面的resources的properties裡面的配置就會跟著相應改變