在 Eclipse 中自动生成 java 个文件
auto-generated java files in Eclipse
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 的 "model directory" 属性。
这应该使您的代码和生成的代码之间的区别更加清楚。有时您可能仍然觉得需要修改生成的代码。 EMF 实际上通过在生成的文件中添加特殊注释来支持这一点,但我不推荐这样做,因为这样很难看出文件是否已被修改。如果您确实需要更改生成的行为,article about properly overriding generated EMF code 中描述的第一种方法更好。基本上,您扩展和覆盖某些生成的 类 和工厂的方法,然后使用 Eclipse 扩展点将生成的工厂替换为您的扩展工厂。
如果您正在查看别人的项目,但不知道使用了哪些代码生成工具:
如果可能,您应该尝试询问作者或检查是否有任何关于构建项目的文档。否则我猜你需要分析项目结构以查看哪些插件用于生成代码。如果您还不知道哪些插件实际上 可以 生成代码,那么这可能有点困难。
- 检查 Eclipse "Project Nature" 以查看使用了哪些插件来构建
- 检查构建配置(Ant、Maven、Gradle)以查找可能生成代码的插件
- 查找特殊文件(xcore、genmodel 等)并找出其中
- 检查是否配置了注释处理器并检查它们是否创建了任何文件
- (仅限 Xtend)检查是否有活动注释并检查它们是否创建任何文件
- 检查代码中是否使用了
@Generated
注解,用于标记生成的文件
如果您已识别所有工具,请尝试更改模型目标目录并重新生成代码。然后将生成的文件与您的原始代码进行比较 - 可能会生成所有重复的文件。
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 的 "model directory" 属性。
这应该使您的代码和生成的代码之间的区别更加清楚。有时您可能仍然觉得需要修改生成的代码。 EMF 实际上通过在生成的文件中添加特殊注释来支持这一点,但我不推荐这样做,因为这样很难看出文件是否已被修改。如果您确实需要更改生成的行为,article about properly overriding generated EMF code 中描述的第一种方法更好。基本上,您扩展和覆盖某些生成的 类 和工厂的方法,然后使用 Eclipse 扩展点将生成的工厂替换为您的扩展工厂。
如果您正在查看别人的项目,但不知道使用了哪些代码生成工具:
如果可能,您应该尝试询问作者或检查是否有任何关于构建项目的文档。否则我猜你需要分析项目结构以查看哪些插件用于生成代码。如果您还不知道哪些插件实际上 可以 生成代码,那么这可能有点困难。
- 检查 Eclipse "Project Nature" 以查看使用了哪些插件来构建
- 检查构建配置(Ant、Maven、Gradle)以查找可能生成代码的插件
- 查找特殊文件(xcore、genmodel 等)并找出其中
- 检查是否配置了注释处理器并检查它们是否创建了任何文件
- (仅限 Xtend)检查是否有活动注释并检查它们是否创建任何文件
- 检查代码中是否使用了
@Generated
注解,用于标记生成的文件
如果您已识别所有工具,请尝试更改模型目标目录并重新生成代码。然后将生成的文件与您的原始代码进行比较 - 可能会生成所有重复的文件。