【问题标题】:Use the same project for EMF model and edit code?对 EMF 模型使用相同的项目并编辑代码?
【发布时间】:2017-02-27 17:49:55
【问题描述】:

我能否以某种方式将同一个 Eclipse 插件项目用于生成的 EMF 模型和相应的生成的 EMF 编辑代码?

通常这两个组件位于两个不同的项目中,EMF Edit 的一个项目名称后缀为.edit。我觉得这是多余的,因为 Edit 项目中的代码太少了,而且它与模型代码的关系如此密切。

我尝试将modelDirectoryeditDirectory Gen Model 属性设置到同一项目中的(不同)目录,但这似乎会导致无穷无尽的混乱和构建问题。我想也许这两个生成步骤会覆盖彼此的项目设置文件。

【问题讨论】:

    标签: eclipse-emf emf


    【解决方案1】:

    经过更多实验后,在同一个项目中使用 EMF 和 EMF Edit 生成代码似乎可以正常工作。

    我必须做的事情如下:

    1. 将 genmodel 属性 modelDirectoryeditDirectory 设置为相同目录。否则我会收到一个构建错误,提示 “类型 ... 已在 ... 中定义”
    2. 设置 genmodel 属性 bundleManifest="false"。否则插件 ID 会被生成过程覆盖。

    除此之外,我还设置了updateClasspath="false" 以避免生成过程混乱。


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

    1. 设置插件ID
    2. 添加导出的包
    3. 将 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>
    

    【讨论】:

      猜你喜欢
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 2020-06-02
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多