2013-04-17 63 views
2

我想構建一個maven acceleo generator。 生成器由多個加速器項目(maven中的工件)以及相互依賴關係組成。Acceleo Maven生成多神器/項目

我遇到了emtl文件之間依賴關係的問題。 在運行時,我收到錯誤,指出mtl中存在編譯錯誤,(沒有)。 我猜測它可能是編譯後的emtl文件中的hrefs。

有一個acceleo行家編譯插件,使這些對是以下之一:

一個)的絕對路徑(結束後成爲經由行家庫)

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

該異常是由EMTL模型中的hrefs解析爲null引起的。

解決hrefs的問題僅僅是缺少資源工廠的註冊(這個異常告訴我這會在EcoreUtil.resolve中丟失,該異常以「//未解決的問題被忽略」捕獲異常。 - 最無助的)。

因此,看起來我的方法是「覆蓋'createURIConverter'方法,並使用URLClassLoader解碼'platform:/ plugin/..'。

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