[Gradle中文教程系列]-跟我學Gradle-7.4:打包 - 利用ConfigSlurper進行不同環(huán)境構(gòu)建

上一篇:為Web工程打不同環(huán)境包

通過配置文件支持多環(huán)境構(gòu)建

除了通過傳入?yún)?shù)加載不同目錄下的properties文件來實現(xiàn)多環(huán)境打包之外,還有一種更便捷的方式來實現(xiàn)這種操作.
借助Groovy的ConfigSlurper特性可以簡潔而明快的達到多環(huán)境打包的目的.打包時候僅需通過-D參數(shù)傳入目標環(huán)境變量即可如:gradle build -Denv=dev,這里可以通過添加gradle.properties文件設(shè)置默認的環(huán)境變量值.

比如當前有如下需求:

  • 需要根據(jù)傳入的變量參數(shù)進行不同環(huán)境打包
  • 需要根據(jù)不同環(huán)境參數(shù)改變esources目錄下屬性文件\xml文件等文件的內(nèi)容

1.與build.gradle平級建立config.groovy,這里的命名可以隨意.

environments {
    // 開發(fā)環(huán)境
    dev {
        db {
            username = "dev"
            password = 'devpwd'
        }        
    }
    // 線上環(huán)境
    production { 
        db {
            username = "prod"
            password = 'prodpwd'
        }        
    }
}

2.修改build.gradle

引入ReplaceToken

import org.apache.tools.ant.filters.ReplaceTokens

處理資源文件時進行加載替換

processResources {
    println "==> Load configuration for $env"
    def config =  new ConfigSlurper(env).parse(file("config.groovy").toURI().toURL()).toProperties()
    
   from(sourceSets.main.resources.srcDirs) {
        filter(ReplaceTokens, tokens: config, beginToken : '${', endToken : '}')
    }
    
}

默認情況下ReplaceTokens會將@attribute@的值替換成目標值,這里我們修改占位描述符為${attribute}

經(jīng)過上面的操作,在執(zhí)行打包命令時,Gradle會加載config.groovy文件中的配置對src/main/resources資源目錄下的資源文件進行替換,注意這里替換的是所有資源文件(properties/xml/txt等)中的占位符,如果只想替換properties文件可以添加過濾限制來實現(xiàn)對部分文件內(nèi)容的替換

法1.

  from(sourceSets.main.resources.srcDirs) {
       filesMatching('**/*.properties') {
        filter(ReplaceTokens, tokens: config, beginToken : '${', endToken : '}')
       }
    }

法2.

  from(sourceSets.main.resources.srcDirs) {
        include '**/*.properties'       
        filter(ReplaceTokens, tokens: config, beginToken : '${', endToken : '}')
    }

完整代碼在此:
https://github.com/GradleCN/GradleSide/tree/master/12-env/02-configfile

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,527評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,261評論 6 342
  • Gradle對于很多開發(fā)者來說有一種既熟悉又陌生的感覺,他是離我們那么近,以至于我每天做項目都需要他,但是他又是離...
    阿_希爸閱讀 9,692評論 10 199
  • 前言 為什么需要學Gradle? Gradle 是 Android 現(xiàn)在主流的編譯工具,雖然在Gradle 出現(xiàn)之...
    真笨笨魚閱讀 1,592評論 0 0
  • 前言 為什么需要學Gradle? Gradle 是 Android 現(xiàn)在主流的編譯工具,雖然在Gradle 出現(xiàn)之...
    Liuuuuuuzi閱讀 2,073評論 0 18

友情鏈接更多精彩內(nèi)容