1

如何理解 Eclipse 开发的大型 Java 项目中自动生成的文件有哪些?

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

4

1 回答 1

4

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

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

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

在此设置中,您应该只编辑src. 如果xtend-gen您在src. src-gen如果您重新生成模型,将更新其中的文件。

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

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


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

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

  • 检查 Eclipse “Project Nature” 以查看用于构建的插件
  • 检查可能生成代码的插件的构建配置(Ant、Maven、Gradle)
  • 查找特殊文件(xcore、genmodel 等)并找出对应的文件
  • 检查是否配置了任何注释处理器并检查它们是否创建任何文件
  • (仅限 Xtend)检查是否有 Active Annotation 并检查它们是否创建了任何文件
  • 检查@Generated代码中是否使用了注解,用于标记生成的文件

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

于 2019-01-22T18:43:32.913 回答