我在Eclipse中有一个XText项目,实现了我自己的语法文件。使用 doGenerate 函数,我生成了几个.java文件。到目前为止,一切都像魅力一样。
我的问题是,每次生成文件时,我都需要执行以下操作:
我希望每次调用doGenerate函数时都能自动执行上述任何或所有步骤,那么有没有办法用xtend / java代码?我应该提一下,我的语法要求用户指定项目目录+名称,以便在运行时从doGenerate函数中获取信息。
代码应该最好能够检测是否已经有一个具有相同名称的项目,并在运行时在开放的Eclipse实例中更新它的内容(如果可能的话)。
或者,如果使用xtend / java无法做到这一点,可以使用插件完成吗?
答案 0 :(得分:1)
创建新项目必须通过eclipse的资源API完成。如果你没问题,在你的代码生成器中有这种依赖关系,你可以简单地向org.eclipse.core.resources添加一个依赖项并执行类似
的操作ResourcesPlugin.getWorkspace().getRoot().getProject("myProject").create(null)
如果你不想要那种依赖,因为你从其他环境(例如Maven)运行你的代码生成器,你需要将项目创建抽象到它自己的类中,注入它并为Eclipse和非Eclipse提供单独的实现
Xtext的代码生成器API(IFileSystemAccess)将使用Eclipse资源API,以确保所有通知等按预期工作,您无需手动刷新。所以这里不需要不同的实现,因为Xtext会处理这个问题。