为了自动执行遗留项目中的某些手动任务,我需要从 java 或 groovy 代码中修改现有的 java 文件。
我不想使用正则表达式,因为在我看来它既不快速也不干净。
我找到了 javassist 和 srcgen4javassist。第一个允许我根据需要修改源代码,但只写入字节码,丢失所有注释和注释。对于第二个,我无法读取不是用 srcgen4javassist 本身创建的现有类。
有一个优雅的解决方案,还是我需要硬着头皮使用正则表达式?
最佳答案
你真的可以使用像 eclipse 的 ASTParser 这样的东西来解析代码。此时您可以以 xpath 方式找到替换目标,但这需要大量工作。
您还可以考虑使用注释和 writing an annotation processor to generate/alter sources at runtime 标记替换区域,但是(至少在我看来)API 很麻烦。
您可以将正则表达式与源代码中的某些标记结合起来,例如
//START REPLACEMENT-TARGET
...code to be edited/replaced
//END REPLACEMENT TARGET
这将使您的正则表达式定位更加安全。
关于java - 使用 Java 或 Groovy 以编程方式修改 Java 源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16190101/