gradle 工程依賴 打包 配置檔案
gradle 父工程下,有兩個子工程,A 和 B,A 依賴於 B,A 中的 build.gradle 檔案中有:
dependencies {
compile(project("B"))
}
使用命令 gradle :A:installDist 將 A 打包,lib 目錄下會有 B.lar 檔案,然而 B 工程的配置檔案並沒有打包到 A 的目錄下或者 B.jar 的壓縮包中.
於是有兩個關於打包的問題:
1.如何在打包 A 時,將B 中的 *.properties 檔案如何打包到 B.jar 中
2.如何在打包 A 時,直接將 B 中的 *.properties 檔案打包到 A 的 conf 目錄下
第 1 個問題,由於父工程下 build.gradle 中對於所有的 subprojects 都有如下配置
jar {
exclude('**/*.properties')
exclude('**/static')
exclude('**/templates')
}
故所有工程打包時,jar 裡面都不會含有配置檔案。
一般來講,所有的配置檔案都不應該包含在 jar 中,讓它可配置。
第 2 個問題,可以這樣解決,在 A 打包時,將 B 的配置檔案一起打包, build.gradle 中寫入:
applicationDistribution.from('../B/src/main/resources/') {
into 'conf'
}
另外還要處理好 B 中的配置檔案與 A 中 conf 配置重名的問題
一般來講,所有被依賴的工程(一般是公共的工程)的配置檔案都應該放在使用工程中去,不應該放在被依賴工程中,一旦某個使用工程配置要改變,不會影響其它使用工程的行為。