コードがコンパイルされる前に、Config.Javaファイルの数行を置き換えたいのですが。私が見つけることができたすべてはそれをコピーしている間フィルターを通してファイルを解析することです。それをコピーする必要があるとすぐに、どこかに保存する必要がありました。そのため、解決策を探しました。一時的な場所にコピーして、行を置き換えます>元のファイルを削除>複製されたファイルを元の場所にコピー>一時ファイルを削除します。より良い解決策はありますか?
アリの replaceregexp のようなものを試すべきかもしれません:
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
に置き換えます。とにかく、それは単なる例であり、目的に応じて変更したり、antを使用して同様の解決策を試したりできます。
lance-Java
の答えを補足するために、変更しようとしている値が1つしかない場合は、このイディオムの方が簡単であることがわかりました。
task generateSources(type: Copy) {
from 'src/replaceme/Java'
into "$buildDir/generated-src"
filter { line -> line.replaceAll('xxx', 'aaa') }
}
src/replaceme/Java
)generated-src
の下に$buildDir
ディレクトリを作成して、clean
タスクによって削除されるようにします。コピータスクと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