对EMF模型使用相同的项目并编辑代码?

时间:2017-02-24 19:30:08

标签: eclipse-emf emf

我是否可以某种方式为生成的 EMF模型和相应生成的 EMF编辑代码使用相同的Eclipse插件项目?< / p>

通常这两个组件位于两个不同的项目中,EMF编辑一个名称后缀为.edit的项目。我发现这是多余的,因为编辑项目中的代码很少,而且它与模型代码密切相关。

我已尝试将modelDirectoryeditDirectory Gen Model属性设置为同一项目中的(不同)目录,但这似乎会导致无休止的混淆和构建问题。我想也许两代步骤会覆盖彼此的项目设置文件。

1 个答案:

答案 0 :(得分:1)

经过一些实验后,似乎可以在同一个项目中使用EMF和EMF Edit生成代码。

我必须做的工作如下:

  1. 将genmodel属性modelDirectoryeditDirectory设置为相同的目录。否则我得到一个构建错误,说“类型......已经在...中定义了<。em>。
  2. 设置genmodel属性bundleManifest="false"。否则,插件ID将被生成过程覆盖。
  3. 除此之外,我还设置了updateClasspath="false"以避免生成过程混乱。

    清单和plugin.xml文件的自动更新似乎如下:

    1. 设置插件ID
    2. 添加导出的包
    3. 将EMF扩展名添加到plugin.xml
    4. 如果需要,需要手动执行

      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>