0

我有一个基于 Acceleo 的生成器,可以从 UML 类生成文本文件。我想在 Obeo Designer 上运行它。我在 Obeo Designer 6.2 中创建了它。当我从 Obeo 本地构建和调试我的应用程序时,一切正常。

但是,如果我使用 Maven 构建我的应用程序,然后将其作为插件安装在 Obeo Designer 上,那么,每当我尝试使用基于 Acceleo 的生成器生成文本文件时,都会出现以下异常:

java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1911)
at org.eclipse.emf.ecore.impl.EModelElementImpl.eObjectForURIFragmentSegment(EModelElementImpl.java:417)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.getEObject(ResourceImpl.java:774)...

我认为,我的问题与此类似:https ://bugs.eclipse.org/bugs/show_bug.cgi?id= 421341 在 Maven 构建期间生成的 .emtl 文件包含“%”,在执行我的生成器并给出异常。在本地构建(没有 Maven)期间生成的 .emtl 文件没有任何“%”并且工作正常。

据我了解,问题在于我尝试使用 EMF 2.8 执行生成器,而用于 Maven 构建的 EMF 版本(可能)是 2.9。我无法在 Obeo Designer 上升级 EMF 的版本。

我的问题是:我怎样才能避免这个问题?我怎么能明确地说,在 Acceleo 生成器的 Maven 构建期间应该使用哪个版本的 EMF?还是取决于Acceleo的版本?

对于我的生成器的 Maven 构建,我按照此处的说明进行操作: https ://wiki.eclipse.org/Acceleo/Maven

提前致谢

此致

4

1 回答 1

1

您应该能够使用 org.eclipse.acceleo.maven.compatibility 构建器插件而不是 org.eclipse.acceleo.maven;兼容版本使用 EMF 2.8 来解决此问题。

于 2014-10-16T08:04:58.507 回答