在模式更改后重新生成 Ecore

3

我有一个XSD文件中的模式。偶尔会创建模式的新版本,我需要更新我的.ecore(和.genmodel)文件。如何在不删除它们并重新生成它们的情况下更新它们?我对ecore进行了一些手动修改,我想保留这些修改。

Ido。

4个回答

3

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


1

目前还没有支持 https://bugs.eclipse.org/bugs/show_bug.cgi?id=197943 的功能。当然,您可以更改模式的副本,并通过保留旧/原始模式版本来跟踪更改,以便您可以向更改添加注释。 - Ed Merks
顺便问一下,如果我使用ecore注释将我的元素添加到.ecore文件或模式中,那么结果会是我的xml文件在验证时会破坏原始模式吗? - Ido
不清楚你在添加什么或为什么要添加。修改映射的注释不会影响XML序列化。请注意,如果您使用EMF新闻组提出问题,我更有可能看到它们。 - Ed Merks

0

我从未尝试过这个,但是XSD FAQ上说:

JAXB会根据XML Schema生成一个简单的Java API,它使用基本上是黑盒设计。EMF会根据XML Schema生成Ecore模型,然后使用基于模板的生成器技术生成高质量的Java API(手写质量)。可以定制XML Schema到Ecore的转换,可以定制用于生成Java API的模板,并且可以定制生成的Java API。 生成器支持合并再生,以便保留您手动编写的更改。 换句话说,EMF更加丰富和灵活,并支持更广泛的XML Schema子集(特别是在2.0中,将支持通配符和混合内容)。

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


我认为这意味着它可以从ecore中重新生成Java代码。 - Ido
@Ido:不要假设,试一下。 - Stephen C

0

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

  • 如果有一个方法的名称中添加了“Gen”--例如setWhateverGen,除了setWhatever之外--新代码将生成到“Gen”方法中。因此,请不要修改“Gen”方法,以便它可以被覆盖,然后从非“Gen”方法中调用它,您可以修改该方法。
  • 所有生成的方法都带有@generated注释。如果添加“NOT”--@generated NOT--则不会被覆盖。

所有其他内容应合并。请放心尝试--这就是版本控制的作用....


我猜它会起作用,但我想在ecore文件中进行更改而不是生成的代码。是否可以像@generated NOT这样给.ecore文件添加注释? - Ido

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接