在Eclipse中自动生成的Java文件

时间:2019-01-22 09:14:04

标签: java eclipse xtend ecore xcore

如何了解在Eclipse中开发的Java项目中哪些是自动生成的文件?

我是新手。例如,一点一点,我发现使用xcore插件生成了许多文件。其他与xtend。只要遍历代码并尝试我正在学习,就可以了。问题是:是否有办法了解要修改哪些文件以自动重新生成其他文件?我的错误是开始手动修改所有文件。

1 个答案:

答案 0 :(得分:4)

通常,您为代码和生成的代码设置不同的源目录。

例如,使用Xtend和EMF的项目在其构建路径中将具有以下源目录:

  • src包含您编写的所有Java和Xtend文件
  • xtend-gen包含由Xtend创建的生成的Java文件
  • src-gen包含由EMF创建的生成的Java文件

在此设置中,您仅应编辑src中的文件。如果您在xtend-gen中编辑Xtend文件,src中的文件将自动更新。如果您重新生成模型,则src-gen中的文件将被更新。

我对Xcore不太熟悉,但是由于它是基于EMF的,我认为您只需要设置genmodel的“模型目录”属性即可。

这应该使您的代码与生成的代码之间的区别更加清晰。有时您仍然可能需要修改生成的代码。 EMF实际上通过在生成的文件中添加特殊注释来支持此操作,但是我不建议这样做,因为很难查看文件是否已通过这种方式修改。如果确实需要更改生成的行为,则此article about properly overriding generated EMF code中描述的第一种方法更好。基本上,您可以扩展和覆盖某些生成的类和工厂的方法,然后使用Eclipse扩展点将扩展的工厂替换为生成的工厂。


如果您正在查看其他人的项目,但不知道使用了哪些代码生成工具:

您应该尝试向作者询问是否可能,或者检查是否有任何有关构建项目的文档。否则,我猜您将需要分析项目结构,以查看用于生成代码的插件。如果您尚不知道哪些插件实际上可以 生成代码,则可能会有些困难。

  • 检查Eclipse的“ Project Nature”以查看用于构建哪些插件
  • 检查可能会生成代码的插件的构建配置(Ant,Maven,Gradle)
  • 查找特殊文件(xcore,genmodel等)并找出哪个文件
  • 检查是否配置了注释处理器,并检查它们是否创建任何文件
  • (仅Xtend)检查是否存在活动注释,并检查它们是否创建了任何文件
  • 检查代码中是否使用了@Generated批注,该批注用于标记生成的文件

如果已标识所有工具,请尝试更改模型目标目录并重新生成代码。然后将生成的文件与原始代码进行比较-可能会生成所有重复的文件。