XTEND/JAVA 自动生成eclipse项目
XTEND/JAVA automatic eclipse project generation
我在 Eclipse 中有一个 XText 项目,实现了我自己的语法文件。使用 doGenerate 函数我生成了几个 .java 文件。到目前为止,一切都很顺利。
我的问题是每次生成文件时都需要执行以下操作:
- 将生成的文件复制到我的 Eclipse 项目目录
- 在 Eclipse 中创建一个新的 Java 项目
- 将生成的文件导入到项目中
我希望能够在每次调用 doGenerate 函数时自动执行任何或所有这些步骤,所以有没有一种方法可以使用 xtend/java 代码?我应该提到我的语法要求用户指定项目目录 + 名称,以便在运行时从 doGenerate 函数中获得信息。
代码最好能够检测是否已存在同名项目,并在运行时在打开的 Eclipse 实例中更新其内容(如果可能)。
或者,如果这不能用 xtend/java 完成,可以用插件来完成吗?
创建新项目必须通过eclipse的资源API来完成。如果你没问题,在你的代码生成器中有这个依赖,你可以简单地添加一个依赖到 org.eclipse.core.resources 并做一些像
ResourcesPlugin.getWorkspace().getRoot().getProject("myProject").create(null)
如果你不想要那个依赖,因为你 运行 你的代码生成器来自其他环境(例如 Maven),你需要将项目创建抽象到它自己的 class 中,注入它并有针对 Eclipse 和非 Eclipse 的单独实现。
Xtext (IFileSystemAccess) 的代码生成器 API 将在后台使用 Eclipse 资源 API,以确保所有通知等按预期工作,您无需手动刷新。所以这里不需要不同的实现,因为 Xtext 会处理它。
我在 Eclipse 中有一个 XText 项目,实现了我自己的语法文件。使用 doGenerate 函数我生成了几个 .java 文件。到目前为止,一切都很顺利。
我的问题是每次生成文件时都需要执行以下操作:
- 将生成的文件复制到我的 Eclipse 项目目录
- 在 Eclipse 中创建一个新的 Java 项目
- 将生成的文件导入到项目中
我希望能够在每次调用 doGenerate 函数时自动执行任何或所有这些步骤,所以有没有一种方法可以使用 xtend/java 代码?我应该提到我的语法要求用户指定项目目录 + 名称,以便在运行时从 doGenerate 函数中获得信息。
代码最好能够检测是否已存在同名项目,并在运行时在打开的 Eclipse 实例中更新其内容(如果可能)。
或者,如果这不能用 xtend/java 完成,可以用插件来完成吗?
创建新项目必须通过eclipse的资源API来完成。如果你没问题,在你的代码生成器中有这个依赖,你可以简单地添加一个依赖到 org.eclipse.core.resources 并做一些像
ResourcesPlugin.getWorkspace().getRoot().getProject("myProject").create(null)
如果你不想要那个依赖,因为你 运行 你的代码生成器来自其他环境(例如 Maven),你需要将项目创建抽象到它自己的 class 中,注入它并有针对 Eclipse 和非 Eclipse 的单独实现。
Xtext (IFileSystemAccess) 的代码生成器 API 将在后台使用 Eclipse 资源 API,以确保所有通知等按预期工作,您无需手动刷新。所以这里不需要不同的实现,因为 Xtext 会处理它。