2013-04-17 2 views
2

Я пытаюсь построить maven acceleo generator. Генератор состоит из нескольких проектов acceleo (артефакты в maven) с взаимозависимостями.Acceleo maven generation multi artifact/project

У меня возникла проблема с зависимостями между файлами emtl. Во время выполнения я получаю ошибки, заявляя, что в mtl есть ошибки компиляции (их нет). Я предполагаю, что это может быть hrefs в скомпилированных файлах emtl.

Существует acceleo компиляции Maven плагин, который позволяет для них, чтобы быть либо:

а) абсолютные пути (в конечном итоге будет через репозиторий Maven)

б) 'platform:/plugin/...' дорожки.

(a) работает, если проекты acceleo (артефакты maven) строятся на той же машине, что и на генераторе, но если местоположение репозитория maven изменяется, у нас есть проблема. Следовательно, развертывание артефактов maven становится бессмысленным.

(b) не работает, потому что работа изнутри maven, 'platform:/plugin/' не может быть разрешена.

Я попытался переопределить метод 'createURIConverter' в AbstractAcceleoGenerator, затем с помощью URLClassLoader мы можем расшифровать 'platform:/plugin/' hrefs и найти нужный файл emtl. я могу подтвердить, что это, кажется, работает, но я все еще получаю сообщенные

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

какие-либо предложения?

ответ

1

Исключение было вызвано hrefs в модели EMTL, разрешающей null.

Проблема с разрешением hrefs была просто нехваткой ресурсов, которые регистрируются (исключение, информирующее меня об этом, теряется в EcoreUtil.resolve, который ловит исключение с помощью «// Невозможность разрешения игнорируется». - наиболее бесполезный).

Так что кажется, что мой подход «переопределить метод createURIConverter» и заставить его декодировать «platform:/plugin/..» с помощью URLClassLoader «действительно работает».

Создание URLClassLoader с использованием того же метода, что и в AcceleoParserMojo.