Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Gradle构建产品的文件中替换令牌?_Java_Replace_Gradle_Token - Fatal编程技术网

Java 如何在Gradle构建产品的文件中替换令牌?

Java 如何在Gradle构建产品的文件中替换令牌?,java,replace,gradle,token,Java,Replace,Gradle,Token,我为Gradle设置了一个普通的构建脚本,我想做的一件事是指定我的构建版本。这是我为替换主Java源文件中的版本标记而设置的代码: import org.apache.tools.ant.filters.ReplaceTokens processResources { from (sourceSets.main.java) { include 'T145/myproj/Main.java' filter(ReplaceTokens, tokens: ['

我为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
功能,但也没有成功。My
Main.java
有一个公共变量
VERSION
,它等于
@VERSION@
,这就是我想要替换的

根据我在中看到的,您希望去掉过滤行中的@,这样它就会显示:

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

Gradle假定它正在查找的标记已经有@的定界,因此它正试图替换@VERSION@,而不是@VERSION@,正如您所希望的那样。

好吧,我更改了它,但由于某种原因它仍然不起作用。我甚至将任务从
processResources
更改为
jar
,因为这是专门处理发布输出的任务。您是否尝试将筛选器行放在from闭包之外?我在filter中看到的每个filter示例都没有将其放入from的闭包中。对我来说,它将替换令牌,但project.version未指定