我想在编译代码之前在Config.java文件中替换几行.我能找到的只是在复制过程中通过过滤器解析文件.一旦我必须复制它,我必须将其保存在某处 - 这就是为什么我去寻求解决方案:在替换行时复制到临时位置>删除原始文件>将复制的文件复制回原始位置>删除临时文件.有更好的解决方案吗?
Sta*_*lav 14
也许你应该尝试像ant的replaceregexp:
task myCopy << {
ant.replaceregexp(match:'aaa', replace:'bbb', flags:'g', byline:true) {
fileset(dir: 'src/main/java/android/app/cfg', includes: 'TestingConfigCopy.java')
}
}
Run Code Online (Sandbox Code Playgroud)
这项任务将取代所有的aaa出现bbb.无论如何,这只是一个例子,你可以在你的目的下修改它或尝试使用ant的类似解决方案.
Vic*_*yew 11
为了补充lance-java答案,如果您只想改变一个值,我发现这个成语更简单:
task generateSources(type: Copy) {
from 'src/replaceme/java'
into "$buildDir/generated-src"
filter { line -> line.replaceAll('xxx', 'aaa') }
}
Run Code Online (Sandbox Code Playgroud)
src/replaceme/java)generated-src目录,$buildDir因此它通过clean任务被删除.您可以使用Copy任务和ReplaceTokens过滤器.例如:
apply plugin: 'java'
task generateSources(type: Copy) {
from 'src/replaceme/java'
into "$buildDir/generated-src"
filter(ReplaceTokens, tokens: [
'xxx': 'aaa',
'yyy': 'bbb'
])
}
// the following lines are important to wire the task in with the compileJava task
compileJava.source "$buildDir/generated-src"
compileJava.dependsOn generateSources
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15063 次 |
| 最近记录: |