gradle - 在 Gradle 中过滤资源时,如何将 token 的评估推迟到执行阶段?

标签 gradle

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

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/

相关文章:

gradle - 如何强制gradle插件应用顺序?

Android 库集成和 APP 大小

android-studio - 错误:如何解决- "Execution failed for task ':app:mergeDebugResource'

gradle - build.gradle不运行测试 “Couldn' t编译构建文件”

gradle - Gradle的$ rootDir/gradle目录是做什么的?

gradle - Gradle-如何在itest来源集中进行飞行路线迁移

android - 在 Android gradle 项目中使用 junit 类别对 robolectric 测试进行分组

ant - 如何从ant构建文件读取属性到gradle构建脚本?

docker - 从 Jenkinsfile 启动时,Gradle docker 容器忽略缓存

android - Gradle仅从Maven Central下载.aar.asc