【问题标题】:regenerate ecore after schema changes架构更改后重新生成ecore
【发布时间】:2010-11-18 02:15:48
【问题描述】:

我在 xsd 文件中有一个架构。偶尔会创建一个新版本的架构,我需要更新我的 .ecore(和 .genmodel)。 如何更新它们,而不删除它们并重新生成它们。我对 ecore 做了一些手动修改,我想保留这些修改。

伊多。

【问题讨论】:

    标签: java eclipse-plugin eclipse-rcp eclipse-emf


    【解决方案1】:

    在 *.genmodel 上使用 Reload... 操作根据 *.xsd 的新版本更新 *.ecore。

    【讨论】:

      【解决方案2】:

      并且不要直接更改 .ecore。在架构中使用 ecore: 注释。 http://www.eclipse.org/modeling/emf/docs/overviews/XMLSchemaToEcoreMapping.pdf

      【讨论】:

      • 尚不支持bugs.eclipse.org/bugs/show_bug.cgi?id=197943。当然,您可以更改架构的副本,并且通过保留旧/原始架构版本,您可以跟踪更改的内容,以便为更改添加注释。
      • B.T.W 如果我将我的元素添加到 .ecore 文件或使用 ecore 注释的架构中,结果会是我的 xml 文件会在验证时破坏原始架构吗?
      • 不清楚你要添加什么或为什么。修改映射的注释不会影响 XML 序列化。请注意,如果您使用 EMF 新闻组提问,我更有可能看到您的问题。
      【解决方案3】:

      我从未尝试过,但XSD FAQ 是这样说的:

      JAXB 生成一个简单的 Java API 一个 XML Schema,它使用 本质上是一个黑盒设计。电磁场 在给定 XML 的情况下生成 Ecore 模型 Schema,然后使用基于模板的 发电机技术,以产生 丰富的Java API(手写 质量)。 XML Schema to Ecore 转换可以定制, 用于生成 Java 的模板 API可以定制,结果 Java API 可以定制。 该 生成器支持合并 再生,使其保持 您的手写更改。 在其他 换句话说,EMF 要丰富得多 灵活,并支持更广泛的 XML Schema 的子集(尤其是在 2.0,其中将支持通配符和混合内容)。

      如果我是你,我会尝试一些实验来看看这个过程的效果如何,以及实际的限制是什么。

      【讨论】:

      • 我认为这意味着它可以从ecore重新生成java代码。
      • @Ido:不要假设。试试看。
      【解决方案4】:

      您可以使用上下文菜单选项重新生成。要保留您的修改:

      • 如果方法名称中添加了“Gen”,例如除了 setWhatever 之外的 setWhateverGen -- 将为“Gen”方法生成新代码。所以不要管“Gen”方法,这样它就可以被覆盖,然后从非 Gen 方法中调用它,您可以修改它。
      • 所有生成的方法都用 @generated 注释。如果添加“NOT” -- @generated NOT -- 它不会被覆盖。

      应合并所有其他内容。继续实验——这就是版本控制的用途......

      【讨论】:

      • 我想它会起作用,但我想在 ecore 中而不是在生成的代码中进行更改。是否可以在 .ecore 文件中添加 @generated NOT 之类的注释?
      猜你喜欢
      • 2014-04-03
      • 2010-10-22
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多