Gradle在一个任务中设置ext属性,并在另一个任务中使用它

Gradle在一个任务中设置ext属性,并在另一个任务中使用它,gradle,Gradle,我有几个任务通过psql执行不同的SQL脚本 任务runScript1(类型:Exec){ 命令行'cmd','/c',“psql-f script1.sql” } 任务runScript2(类型:Exec){ 命令行“cmd”、“/c”、“psql-f script2.sql” } 现在,我想编写一个通用exec任务,并只将脚本名传递给它 ext{ scriptName=“” } 任务runScriptGeneric(类型:Exec){ 命令行'cmd','c','psql-f${scrip

我有几个任务通过psql执行不同的SQL脚本

任务runScript1(类型:Exec){
命令行'cmd','/c',“psql-f script1.sql”
}
任务runScript2(类型:Exec){
命令行“cmd”、“/c”、“psql-f script2.sql”
}
现在,我想编写一个通用exec任务,并只将脚本名传递给它

ext{
scriptName=“”
}
任务runScriptGeneric(类型:Exec){
命令行'cmd','c','psql-f${scriptName}
}
任务runScript1(){
scriptName='script1.sql'
}
runScript1.finalizedBy runScriptGeneric
任务runScript2(){
scriptName='script2.sql'
}
runScript2.finalizedBy runScriptGeneric
不幸的是,这种方法不起作用。
scriptName
runScriptGeneric
任务中保持为空


我怀疑这与
Exec
类型有关,因为下面的简单任务运行良好

ext{
scriptName=“”
}
任务runScriptGeneric(){
多拉斯特{
println“${scriptName}”
}
}
任务runScript1(){
多拉斯特{
scriptName='script1.sql'
}
}
runScript1.finalizedBy runScriptGeneric
任务runScript2(){
多拉斯特{
scriptName='script2.sql'
}
}
runScript2.finalizedBy runScriptGeneric

我不想将其作为命令行参数(
-psscriptname
)传递,因为我想保留每个脚本的单个任务。是否有其他方法将
脚本名
从每个单独的任务传递到通用任务?

实际上,这不是我问题的答案,但这是我可以接受的解决方案

我创建了一个动态任务,而不是将变量传递给正在执行的脚本:

['Script1',Script2']。每个{taskName->
任务“运行${taskName}”(类型:Exec){
命令行'cmd','/c',“psql-f${taskName}”
}
}

事实上,这不是我问题的答案,但这是一个我可以接受的解决方案

我创建了一个动态任务,而不是将变量传递给正在执行的脚本:

['Script1',Script2']。每个{taskName->
任务“运行${taskName}”(类型:Exec){
命令行'cmd','/c',“psql-f${taskName}”
}
}