在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())
      }
   }
}

这样,应该在执行阶段扩展参数。

07-26 02:36