我有一个基于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文件包含“%”,在执行生成器期间无法解析该文件并给出异常。 在本地构建期间生成的.emtl文件(没有Maven)没有任何“%”并且工作正常。
据我所知,问题是我尝试用EMF 2.8执行我的生成器,而用于Maven构建的EMF版本(可能)是2.9。我无法在Obeo Designer上升级EMF版本。
我的问题是:我该如何避免这个问题?我怎么能明确地说,在Maven构建的Acceleo生成器期间应该使用哪个版本的EMF?或者它取决于Acceleo的版本?
对于我的生成器的Maven构建,我按照这里的说明操作: https://wiki.eclipse.org/Acceleo/Maven
提前致谢
祝你好运
答案 0 :(得分:1)
您应该能够使用org.eclipse.acceleo.maven.compatibility构建器插件而不是org.eclipse.acceleo.maven;兼容性版本使用EMF 2.8来解决此问题。