我正在寻找一种简单的解决方案,以便在编译之前查找和替换常量。例如,@Version@
替换为1.0.0
,因此程序可以访问正确的#s
版本。
最佳答案
如果由于项目限制您确实需要更改资源,这可能对您有用:
假设您的版本信息保存在名为VersionInfo.java
的类中,以下代码段将原始VersionInfo源从默认文件夹复制到生成的文件夹中,并通过更新版本信息来处理该文件。您的compileJava任务将这个生成的文件作为另一个源,并忽略了原始文件,以避免在编译期间出现重复的类名错误:
task preprocessVersionInfo(type:Copy){
include "VersionInfo.java"
from "src/main/java"
into "$buildDir/preprocessedJava"
inputs.property "version", project.version
filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [version: project.version])
}
compileJava {
source preprocessVersionInfo.outputs.files
exclude {
it.file.absolutePath.endsWith("src/main/java/VersionInfo.java")
}
}
旁注:此方法将IDE设置保持不变,这意味着在开发过程中,您将继续使用未修改的VersionInfo类。