2

我正在尝试构建一个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/'无法解决。

我试图覆盖 中的'createURIConverter'方法AbstractAcceleoGenerator,然后使用 aURLClassLoader我们可以解码'platform:/plugin/'href 并找到正确的 emtl 文件。我可以验证这似乎有效,但是我仍然收到报告

"org.eclipse.acceleo.engine.AcceleoEvaluationException: Unresolved compilation error in generation module"

有什么建议么?

4

1 回答 1

1

该异常是由 EMTL 模型中的 href 解析为 null 引起的。

解决 hrefs 的问题只是缺少注册的资源工厂(通知我这一点的异常在 EcoreUtil.resolve 中丢失,该异常用“// 无法解决被忽略。” - 最无助)。

所以看来我的“覆盖'createURIConverter'方法,并让它使用URLClassLoader解码'platform:/plugin/..'”的方法确实有效。

使用在 AcceleoParserMojo 中完成的相同方法构建 URLClassLoader。

于 2013-04-20T16:07:44.980 回答