在gradle中,我目前正在执行以下操作:
task generateConfiguration(type: Copy) {
into "$buildDir/generatedConfiguration"
from "src/main/config-templates"
expand(loadConfig())
}
loadConfig()
使用Groovy ConfigSlurper
加载基于Groovy的配置,并返回Map
供“expand”方法使用。需要注意的是,这种方法有效。
loadConfig()
在配置阶段被调用。如果我想将
loadConfig()
进程推迟到执行阶段,则无法使用这种方法。 expand()
方法不接受闭包。有什么好的建议,以便我可以将loadConfig推迟到执行阶段?
我一直在寻找一种简单的解决方案,但是没有运气。
目前,我只有两条可能的路线:
1)实现一个 map 对象,该对象将推迟
loadConfig()
操作,直到模板引擎访问该 map 2)重新实现复制任务,以便可以关闭它。
我正在尝试寻找更简单的选择。
最佳答案
也许:
task generateConfiguration {
doLast {
copy {
into "$buildDir/generatedConfiguration"
from "src/main/config-templates"
expand(loadConfig())
}
}
}
这样,应该在执行阶段扩展参数。