我正在尝试构建一个maven acceleo generator。生成器由多个acceleo项目(maven中的工件)组成,具有相互依赖关系。
我遇到了emtl文件之间的依赖关系问题。在运行时,我收到错误消息,指出mtl中存在编译错误(实际上并没有)。我猜可能是编译的emtl文件中的href。
有一个acceleo maven编译插件,它允许以下两种情况:
a)绝对路径(最终通过maven存储库)
b) 'platform:/plugin/...'路径。
(a)如果acceleo项目(maven工件)与我们进行生成的机器构建在同一台机器上,则可以工作,但如果maven存储库的位置发生变化,我们就会遇到问题。因此,部署maven工件最终是毫无意义的。
(b)无法工作,因为从maven内部运行,无法解析'platform:/plugin/'。
我尝试覆盖AbstractAcceleoGenerator中的'createURIConverter'方法,然后使用URLClassLoader可以解码'platform:/plugin/' href并找到正确的emtl文件。我可以验证这似乎是有效的,但我仍然得到报告
"org.eclipse.acceleo.engine.AcceleoEvaluationException: Unresolved compilation error in generation module"有什么建议吗?
发布于 2013-04-21 00:07:45
异常是由EMTL模型中的href解析为null引起的。
解析hrefs的问题是缺少注册的资源工厂(通知我这一点的异常在EcoreUtil.resolve中消失了,它捕获了异常"//无法解析被忽略。“-最无用的)。
因此,我的“覆盖‘createURIConverter’方法,并让它使用URLClassLoader解码‘platform:/plugin/..’的方法似乎起作用了。”
使用与AcceleoParserMojo中相同的方法构建URLClassLoader。
https://stackoverflow.com/questions/16054625
复制相似问题