对 EMF 模型和编辑代码使用相同的项目?
Use the same project for EMF model and edit code?
我能否以某种方式对生成的 EMF 模型 和相应生成的 使用 相同的 Eclipse 插件项目 ]EMF 编辑 代码?
通常这两个组件位于两个不同的项目中,EMF Edit 项目的名称带有后缀 .edit
。我觉得这是多余的,因为编辑项目中的代码很少,而且它与模型代码密切相关。
我曾尝试将 modelDirectory
和 editDirectory
Gen 模型属性设置为同一项目中的(不同)目录,但这似乎会导致无穷无尽的混乱和构建问题。我想也许这两个生成步骤会互相覆盖对方的项目设置文件。
经过更多实验后,在同一个项目中使用 EMF 和 EMF Edit 生成的代码似乎效果很好。
我必须做的事情如下:
- 将 genmodel 属性
modelDirectory
和 editDirectory
设置到 相同的 目录。否则我得到一个构建错误说 "The type ... is already defined in ...".
- 正在设置 genmodel 属性
bundleManifest="false"
。否则插件 ID 会被生成过程覆盖。
除此之外,我还设置了 updateClasspath="false"
以避免生成过程混乱。
清单和 plugin.xml
文件的自动更新如下:
- 设置插件ID
- 添加导出包
- 将 EMF 扩展添加到
plugin.xml
2和3需要手动执行。这将涉及向 plugin.xml
添加类似于这些的条目:
<extension point="org.eclipse.emf.ecore.generated_package">
<!-- @generated model -->
<package
uri="somePackage"
class="somePackage.SomePackage"
genModel="model/model.xcore"/>
</extension>
<extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
<!-- @generated model -->
<factory
uri="somePackage"
class="somePackage.someClass"
supportedTypes=
"org.eclipse.emf.edit.provider.IEditingDomainItemProvider
org.eclipse.emf.edit.provider.IStructuredItemContentProvider
org.eclipse.emf.edit.provider.ITreeItemContentProvider
org.eclipse.emf.edit.provider.IItemLabelProvider
org.eclipse.emf.edit.provider.IItemPropertySource"/>
</extension>
我能否以某种方式对生成的 EMF 模型 和相应生成的 使用 相同的 Eclipse 插件项目 ]EMF 编辑 代码?
通常这两个组件位于两个不同的项目中,EMF Edit 项目的名称带有后缀 .edit
。我觉得这是多余的,因为编辑项目中的代码很少,而且它与模型代码密切相关。
我曾尝试将 modelDirectory
和 editDirectory
Gen 模型属性设置为同一项目中的(不同)目录,但这似乎会导致无穷无尽的混乱和构建问题。我想也许这两个生成步骤会互相覆盖对方的项目设置文件。
经过更多实验后,在同一个项目中使用 EMF 和 EMF Edit 生成的代码似乎效果很好。
我必须做的事情如下:
- 将 genmodel 属性
modelDirectory
和editDirectory
设置到 相同的 目录。否则我得到一个构建错误说 "The type ... is already defined in ...". - 正在设置 genmodel 属性
bundleManifest="false"
。否则插件 ID 会被生成过程覆盖。
除此之外,我还设置了 updateClasspath="false"
以避免生成过程混乱。
清单和 plugin.xml
文件的自动更新如下:
- 设置插件ID
- 添加导出包
- 将 EMF 扩展添加到
plugin.xml
2和3需要手动执行。这将涉及向 plugin.xml
添加类似于这些的条目:
<extension point="org.eclipse.emf.ecore.generated_package">
<!-- @generated model -->
<package
uri="somePackage"
class="somePackage.SomePackage"
genModel="model/model.xcore"/>
</extension>
<extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
<!-- @generated model -->
<factory
uri="somePackage"
class="somePackage.someClass"
supportedTypes=
"org.eclipse.emf.edit.provider.IEditingDomainItemProvider
org.eclipse.emf.edit.provider.IStructuredItemContentProvider
org.eclipse.emf.edit.provider.ITreeItemContentProvider
org.eclipse.emf.edit.provider.IItemLabelProvider
org.eclipse.emf.edit.provider.IItemPropertySource"/>
</extension>