Acceleo maven生成多个工件/项目

时间:2013-04-17 08:00:19

标签: maven acceleo multi-project

我正在尝试构建maven acceleo generator。 该生成器由多个加速项目(maven中的工件)组成,具有相互依赖性。

我遇到了emtl文件之间依赖关系的问题。 在运行时,我收到错误,指出mtl中存在编译错误(没有)。 我猜它可能是编译的emtl文件中的hrefs。

有一个acceleo maven编译插件允许这些插件:

a)绝对路径(最终通过maven存储库)

b)'platform:/plugin/...'路径。

(a)如果加速项目(maven工件)构建在与我们生成代码的机器相同的机器上,则工作正常,但是如果maven存储库的位置发生变化,我们就会遇到问题。因此,部署maven工件最终毫无意义。

(b)不起作用,因为在maven内部运行,'platform:/plugin/'无法解决。

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

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

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

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

解决hrefs的问题只是缺少资源工厂的注册(通知我在EcoreUtil.resolve中丢失了这个例外,它抓住了异常“//无法解决被忽略。” - 最无益的)

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

使用与AcceleoParserMojo相同的方法构建URLClassLoader。