Gradle實戰系列(二) 自動替換的配置檔案

2022-08-27 06:39:09 字數 2534 閱讀 7889

專案開發過程中,通常程式在開發-測試-上線三個階段部署在三個不同的環境,例如連線資料庫的伺服器 ip 及帳號密碼不同,呼叫的外部服務指向不同伺服器。針對不同環境使用不同配置檔案的問題,主要可以有兩種解決方案:

首先建立資源資料夾

mkdir src\main\resources
在 resources 路徑下建立jdbc.properties檔案

[email protected]@

[email protected]@

[email protected]@

接著利用 groovy 的語法在工程資料夾中建立config.groovy的配置檔案,對應前面建立的jdbc.properties檔案,分別配置開發/測試/生產這三個環境的 jdbc 引數

environments 

}test

}prd

}}

由於 gradle 在執行指令碼時,可以利用 -p 傳入引數的方式來區分不同的環境,所以我們可以在build.gradle裡面加上 ext 屬性塊,從傳入的引數來改變預設的 profile 屬性,假設這裡透過傳入 env 引數來決定當前要建構的環境

ext
另外在自定義乙個函式,根據 profile 來讀取前面建立的config.groovy檔案

def loadgroovyconfig()
接著改變 processresources task,將資源資料夾中的配置檔案,根據config.groovy檔案的內容來替換佔位符

processresources 

}

在執行建構指令碼時,將 env 引數傳入

gradle clean build -penv=dev
執行成功後可以在build\resources\main這個路徑看到已經替換好的jdbc.properties檔案,並且也會被打包進 jar 包中

jdbc.url=dev_ip

jdbc.user=dev_user

jdbc.password=dev_pwd

假設在專案中的配置檔案除了 properties 檔案之外,還會有 xml 檔案,首先在 config 資料夾中建立不同環境不同型別的配置檔案路徑

mkdir config\properties\dev

mkdir config\properties\test

mkdir config\properties\prd

mkdir config\xml\dev

mkdir config\xml\test

mkdir config\xml\prd

並且將不同環境的配置檔案都放置在對應的資料夾之下

[gradle_sample]

├---[.gradle]

│ ├---內容省略

│├---[build]

│ ├---內容省略

│├---[config]

│ ├---[properties]

│ │ ├---[dev]

│ │ │ ├---jdbc.properties

│ │ │

│ │ ├---[prd]

│ │ │ ├---jdbc.properties

│ │ │

│ │ ├---[test]

│ │ ├---jdbc.properties

│ │

│ ├---[xml]

│ │ ├---[dev]

│ │ │

│ │ ├---[prd]

│ │ │

│ │ ├---[test]

│├---[gradle]

│ ├---內容省略

│├---build.gradle

├---gradlew

├---gradlew.bat

├---settings.gradle

接著修改build.gradle裡面的 sourcesets 屬性塊

sourcesets ", "config/xml/$"}}

}

最後一樣在執行建構指令碼時,就可以看到從對應 env 引數的config路徑下被複製過來到 在build\resources\main裡面的jdbc.properties

Gradle自動構建系列之 四 一 建立任務

gradle中有多中方式建立任務,都是依賴於project提供的快捷方式以及taskcontainer提供的create方法。def task leslie task leslie leslie.dolast 同樣是基於project物件的task方法,引數是任務名 乙個對該任務配置的map物件 d...

Git開發系列 二 實戰

1.reset使用場景 1.commit到本地,但是不想把某個commit,push到遠端.2.reset回滾到某個版本,1.中的作用,也用到了reset回滾的機制 3.git reset hard commit id 回滾到commit id,4.git reset hard head 3 將最近...

Spring實戰系列 (14)Bean的自動檢測

即使有助於完全消除spring註解中的和元素,但是還是不能完全消除,仍然需要使用元素顯示定義bean。因此元素出現了,它除了完成一樣的工作,還允許spring自動檢測bean和定義bean。這就意味著我們不使用元素,spring應用中的大多數 或者所有 bean都能夠實現定義和裝配。為了配置spri...