Gradle复制任务随执行时派生的属性展开

时间:2017-09-25 16:39:04

标签: gradle build.gradle

在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()操作,直到模板引擎访问该映射 2)重新实现复制任务,以便它可以关闭。

我正在努力寻找更简单的选择..

1 个答案:

答案 0 :(得分:0)

也许:

task generateConfiguration {
   doLast {
      copy {
         into "$buildDir/generatedConfiguration" 
         from "src/main/config-templates" 
         expand(loadConfig())
      }
   }    
}

这样就可以在执行阶段扩展参数。