【问题标题】:How is a token replaced in a file for a Gradle build product?如何在 Gradle 构建产品的文件中替换令牌?
【发布时间】:2015-08-18 02:59:50
【问题描述】:

我有一个普通的 Gradle 构建脚本,我想做的一件事是指定我的构建版本。这是我为替换主 Java 源文件中的版本标记而设置的代码:

import org.apache.tools.ant.filters.ReplaceTokens

processResources {
    from (sourceSets.main.java) {
        include 'T145/myproj/Main.java'
        filter(ReplaceTokens, tokens: ['@VERSION@' : project.version])
    }
}

但是它不起作用。我尝试使用replace 函数,但这也没有证明是成功的。我的Main.java 有一个公共变量VERSION 等于@VERSION@,这就是我想要替换的。

【问题讨论】:

    标签: java replace gradle token


    【解决方案1】:

    根据我在Gradle manual example of ReplaceTokens 中看到的内容,您希望删除过滤器行中的@,使其显示为:

    filter(ReplaceTokens, tokens: [VERSION : project.version])
    

    Gradle 假定它正在寻找的标记已经用 @ 分隔,因此它会尝试替换 @@VERSION@@ 而不是 @VERSION@,就像你想要的那样。

    【讨论】:

    • 好吧,我改变了它,但由于某种原因它仍然不起作用。我什至将任务从processResources 更改为jar,因为这是专门处理输出版本的任务。
    • 您是否尝试将过滤线放在 from 关闭之外?我用 filter 看到的每个过滤器示例都没有用 from 将其放入闭包中。
    • 对我来说它替换了令牌但 project.version 未指定
    猜你喜欢
    • 2015-10-31
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    相关资源
    最近更新 更多