我有以下处理资源的配置:
project.ext.releaseVersion = {
project.version.contains("SNAPSHOT") ? timestamp : project.version
}
processResources {
filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [version: project.ext.releaseVersion()])
}
它可以工作,但是 project.ext.releaseVersion()
在配置阶段进行评估,我不知道如何将其延迟到执行阶段。
最佳答案
事实证明,这就像在 doFirst
block 中应用过滤器一样简单(正如 Peter 上面评论的那样)。我还摆脱了获取更新值的闭包,但这可能只是个人喜好。
processResources {
doFirst {
def releaseVersion =
project.version.contains("SNAPSHOT") ? project.ext.timestamp : project.version
filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [version: releaseVersion])
}
}
关于gradle - 在 Gradle 中过滤资源时,如何将 token 的评估推迟到执行阶段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15981222/