正如Eclipse文档所建议的,我有一个编译每个源文件的org.eclipse.core.resources.IncrementalProjectBuilder
,另外我还有一个可以编辑每个源文件的org.eclipse.ui.editors.text.TextEditor
。每个源文件都被编译到它自己的编译单元中,但它可以引用其他(已编译的)源文件的类型。使用Eclipse构建DSL时,增量编译的最佳方法是什么?
两项任务,也是它重要的是:
- 编译(确保我们实际上正在使用的类型存在)
- 自动完成(查找的类型,所以我们可以看到什么样的属性/方法是存在的)
为了做到这一点,我想存储在内存中的所有编译类型的表示(下面称为我的“类型存储”)。
我的问题是双重的:
任务一个以上由编辑的建设者和任务二进行。为了让他们都可以访问这个类型的商店,我应该在他们都可以访问的地方创建一个静态存储,或者Eclipse是否提供了一个更好的方法来处理这个问题?请注意,这是eclipse,而不是我,在需要时实例化构建器和编辑器。
打开eclipse时,我不想重建整个项目,所以我可以重新填充我的类型存储。到目前为止,我的最佳解决方案是将此数据保存在某处,然后从中重新填充我的商店(可能在项目打开时)。这是其他增量编译器通常这样做的吗?我相信Java的方法是使用一个特殊的解析器,从类文件中有效地提取这些数据。
任何见解将非常感激。这是我的第一个DSL。
感谢您的详细解释。我认为你或多或少证实了我应该如何实现的怀疑,但了解Java插件如何解决问题很有用。 – 2011-04-25 08:00:52