我有以下配置来处理资源:
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()
在配置阶段得到评估,我无法弄清楚如何延迟它直到执行阶段。
答案 0 :(得分:2)
事实证明这就像在doFirst
块中应用过滤器一样简单(如上面Peter所述)。我也摆脱了关闭以获得更新的价值,但这可能只是个人偏好。
processResources {
doFirst {
def releaseVersion =
project.version.contains("SNAPSHOT") ? project.ext.timestamp : project.version
filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [version: releaseVersion])
}
}
答案 1 :(得分:0)
您可以在afterEvaluate()
方法调用中包装processResources
以延迟评估:
afterEvaluate {
processResources {
filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [version: project.ext.releaseVersion()])
}
}