我为 Gradle 创建了一个插件,以部署到我公司的 OpenVMS 目录结构中,该目录结构添加deployDev
、deployTest
,并且在提供凭据时,将deployProd
任务添加到应用程序构建中。我已将所有环境的配置文件提取到一个单独的项目中,以便我们可以将配置与应用程序分开部署。
这些自定义任务取决于应用程序插件的distZip
任务,我还没有找到一个好方法来根据调用的任务(例如,deployDev
包括开发配置)将适当的配置文件放入 zip 中。
我尝试在配置阶段让 deploy* 任务复制配置文件:
task distZip(type:Zip, overwrite:true) {
archiveName = 'config.zip'
from "build/props"
}
deployDev.configure {
copyResources('dev')
}
deployTest.configure {
copyResources('test')
}
project.tasks.findByName('deployProd')?.configure {
copyResources('prod')
}
def copyResources(String environment){
copy {
from "src/$environment/resources"
into 'build/props'
}
}
由于在所有任务上执行配置阶段,这不起作用,因此即使我们执行deployDev
,测试配置也已复制到开发资源上。
我也试过:
file('build/props').mkdirs()
task distZip(type:Zip, overwrite:true) {
archiveName = 'config.zip'
from "build/props"
outputs.upToDateWhen {false}
}
gradle.taskGraph.whenReady { graph ->
if (graph.hasTask('deployProd')) {
copyResources('prod')
}else if(graph.hasTask('deployTest')){
copyResources('test')
}else if(graph.hasTask('deployDev')){
copyResources('dev')
}
}
def copyResources(String environment){
copy {
from "src/$environment/resources"
into 'build/props'
}
}
然而,有了这个提议,distZip
任务总是是最新的。有没有正确的方法来做到这一点?