Gradle 任务替换 .java 文件中的字符串

新手上路,请多包涵

我想在编译代码之前替换我的 Config.java 文件中的几行。我所能找到的只是在复制过程中通过过滤器解析文件。一旦我必须复制它,我就必须将它保存在某个地方——这就是我寻求解决方案的原因:在替换行时复制到临时位置 > 删除原始文件 > 将复制的文件复制回原始位置 > 删除临时文件。有更好的解决方案吗?

原文由 Srneczek 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 864
2 个回答

也许你应该尝试像蚂蚁的 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 尝试一些类似的解决方案。

原文由 Stanislav 发布,翻译遵循 CC BY-SA 3.0 许可协议

为了补充 lance-java 的答案,如果您只想更改一个值,我发现这个成语更简单:

 task generateSources(type: Copy) {
    from 'src/replaceme/java'
    into "$buildDir/generated-src"
    filter { line -> line.replaceAll('xxx', 'aaa') }
}

警告:请记住 Copy 任务只会在源文件更改时运行。如果您希望根据其他条件进行替换,则需要使用 Gradle 的增量构建功能来指定它。

原文由 Vic Seedoubleyew 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题