Gradle 任务替换.java文件中的字符串
我想在编译代码之前替换我的Config.java文件中的几行。我所能找到的只是在复制文件时通过过滤器解析文件。一旦我必须复制它,我必须将其保存在某个地方 - 这就是为什么我选择解决方案:复制到临时位置,同时替换行>删除原始文件>复制复制的文件回到原始位置>删除临时文件。有没有更好的解决方案?
我想在编译代码之前替换我的Config.java文件中的几行。我所能找到的只是在复制文件时通过过滤器解析文件。一旦我必须复制它,我必须将其保存在某个地方 - 这就是为什么我选择解决方案:复制到临时位置,同时替换行>删除原始文件>复制复制的文件回到原始位置>删除临时文件。有没有更好的解决方案?
也许你应该尝试像蚂蚁的替换正则表达式这样的东西:
task myCopy << {
ant.replaceregexp(match:'aaa', replace:'bbb', flags:'g', byline:true) {
fileset(dir: 'src/main/java/android/app/cfg', includes: 'TestingConfigCopy.java')
}
}
此任务将用 替换 的所有出现项。无论如何,这只是一个例子,你可以根据自己的目的修改它,或者用蚂蚁尝试一些类似的解决方案。aaa
bbb
为了补充的答案,我发现如果你只想改变一个值,这个成语就更简单了:lance-java
task generateSources(type: Copy) {
from 'src/replaceme/java'
into "$buildDir/generated-src"
filter { line -> line.replaceAll('xxx', 'aaa') }
}
注意事项:请记住,仅当源文件发生更改时,任务才会运行。如果您希望根据其他条件进行替换,则需要使用 Gradle 的增量构建功能来指定这一点。Copy