3

我有以下用于处理资源的配置:

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()在配置阶段得到评估,我不知道如何将它延迟到执行阶段。

4

2 回答 2

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])
    }
}
于 2013-04-13T18:34:42.057 回答
0

processResources您可以在afterEvaluate()方法调用中包装配置以延迟评估:

afterEvaluate {
    processResources {
        filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [version: project.ext.releaseVersion()])
    }
}
于 2013-04-13T11:55:34.097 回答