我有一个基于 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
提前致谢
此致