2

を構築しようとしていmaven acceleo generatorます。ジェネレーターは、相互依存関係を持つ複数の acceleo プロジェクト (maven のアーティファクト) で構成されます。

emtl ファイル間の依存関係で問題が発生しています。実行時に、mtl にコンパイル エラーがあることを示すエラーが表示されます (存在しません)。コンパイルされた emtl ファイル内の href である可能性があると推測しています。

これらを次のいずれかにすることができる acceleo maven compile プラグインがあります。

a)絶対パス(最終的にはmavenリポジトリ経由)

b)'platform:/plugin/...'パス。

(a) acceleo プロジェクト (maven アーティファクト) が、生成を行うマシンと同じマシンでビルドされている場合は機能しますが、maven リポジトリの場所が変更された場合、問題が発生します。したがって、maven アーティファクトをデプロイしても意味がありません。

(b) maven 内から実行する'platform:/plugin/'と解決できないため、機能しません。

'createURIConverter'のメソッドをオーバーライドしようとしましたがAbstractAcceleoGenerator、 を使用して、hrefURLClassLoaderをデコードし'platform:/plugin/'、正しい 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 に答える