如何理解在Eclipse中开发的大型Java项目中哪些是自动生成的文件?
我是个新手。例如,一点一点地,我发现许多文件是通过使用xcore
插件生成的。其他带有xtend
。只是浏览代码并尝试我正在学习,这没关系。问题是:有没有办法了解要修改哪些文件以自动重新生成其他文件?我的错误是开始手动修改所有文件。
通常为代码和生成的代码设置不同的源目录。
例如,使用Xtend和EMF的项目在其构建路径中会有以下源目录:
src
包含您编写的所有Java和Xtend文件xtend-gen
包含Xtend创建的生成Java文件src-gen
包含EMF创建的生成Java文件
在此设置中,您应该只编辑src
中的文件。如果编辑src
中的Xtend文件,xtend-gen
中的文件将自动更新。如果重新生成模型,src-gen
中的文件将被更新。
我对Xcore不太熟悉,但由于它是基于EMF的,我认为您只需要设置genmodel的"模型目录"属性。
这将使您的代码和生成的代码之间的区别更加清晰。有时您可能仍然觉得有必要修改生成的代码。EMF实际上通过在生成的文件中添加特殊的注释来支持这一点,但我不建议这样做,因为很难看出文件是否以这种方式进行了修改。如果您确实需要更改生成的行为,那么本文中描述的关于正确重写生成的EMF代码的第一种方法会更好。基本上,您可以扩展和覆盖一些生成的类和工厂的方法,然后使用Eclipse扩展点将生成的工厂替换为扩展的工厂。
如果你正在看别人的项目,却不知道使用了哪些代码生成工具:
如果可能的话,你应该试着询问作者,或者检查是否有任何关于构建项目的文档。否则,我想你需要分析项目结构,看看哪些插件用于生成代码。如果你还不知道哪些插件可以生成代码,这可能会有点困难。
- 查看Eclipse"Project Nature"以查看使用哪些插件来构建
- 检查可能生成代码的插件的构建配置(Ant、Maven、Gradle)
- 查找特殊文件(xcore、genmodel等)并找出
- 检查是否配置了任何注释处理器,并检查它们是否创建了任何文件
- (仅限Xtend)检查是否有活动注释,并检查它们是否创建了任何文件
- 检查代码中是否使用了
@Generated
注释,用于标记生成的文件
如果已识别所有工具,请尝试更改模型目标目录并重新生成代码。然后将生成的文件与原始代码进行比较——所有重复的文件都可能生成。