Java 如何在Gradle构建产品的文件中替换令牌?
我为Gradle设置了一个普通的构建脚本,我想做的一件事是指定我的构建版本。这是我为替换主Java源文件中的版本标记而设置的代码: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: ['
import org.apache.tools.ant.filters.ReplaceTokens
processResources {
from (sourceSets.main.java) {
include 'T145/myproj/Main.java'
filter(ReplaceTokens, tokens: ['@VERSION@' : project.version])
}
}
但是它不起作用。我尝试使用
replace
功能,但也没有成功。MyMain.java
有一个公共变量VERSION
,它等于@VERSION@
,这就是我想要替换的 根据我在中看到的,您希望去掉过滤行中的@,这样它就会显示:
filter(ReplaceTokens, tokens: [VERSION : project.version])
Gradle假定它正在查找的标记已经有@的定界,因此它正试图替换@VERSION@,而不是@VERSION@,正如您所希望的那样。好吧,我更改了它,但由于某种原因它仍然不起作用。我甚至将任务从
processResources
更改为jar
,因为这是专门处理发布输出的任务。您是否尝试将筛选器行放在from闭包之外?我在filter中看到的每个filter示例都没有将其放入from的闭包中。对我来说,它将替换令牌,但project.version未指定