2015-06-20 2 views
1

У меня есть два Maven проект:Maven исполняет два модуля последовательно

  • Один строит несколько OSGi расслоения и создает локальный репозиторий p2, содержащие их
  • Другие строит плагин для Eclipse с Tycho, используя эти пучки

Когда я выполняю их отдельно, все работает: первое выполнение создает репозиторий, а второй может использовать его.

Но я хочу создать одиночный жом, исполняющий оба. Простой подход:

<modules> 
    <module>p2-repository-generator</module> 
    <module>tycho-project</module> 
</modules> 

не работает, потому что Tycho пытается использовать репозиторий, генерируемый первым ПОМ еще до того, существует as described here.

Могу ли я выполнить две задачи maven последовательно, используя maven, без внешних инструментов? Или я могу отложить привязку зависимости tycho к более поздней точке сборки?

Для уточнения:

  • tycho-project зависит от p2-repository-generator, поэтому она выполняется после него.
  • , но Tycho использует пользовательский lifecycle participant, который пытается разрешить зависимости p2 с обратным вызовом - что слишком рано, поскольку репозиторий p2 будет там только после того, как его создаст p2-repository-generator.
  • Этот aggretor работает после того, как я исполняю p2-repository-generator один раз вручную, потому что тогда tycho-project может найти хранилище p2 генерируемый ею
+0

Для справки: [планируется сделать Tycho еще не разрешать зависимости в afterProjectsRead] (https://bugs.eclipse.org/bugs/show_bug.cgi?id=353889), но все равно потребуется некоторое время, чтобы реализовать их. – oberlies

ответ

1

Как вы правильно отметили, Tycho делает все очень рано в сборке, что приводит к проблемам, если вы создаете контент в том же сборке, который будет использоваться сборкой Tycho. Обходной путь для этой проблемы заключается в том, чтобы обернуть часть сборки с помощью Tycho в вызове maven-invoker-plugin.

1

Вы попробуйте установить зависимость от p2-repository-generator для tycho-project? IMHO он должен обеспечить последовательность сборки, в которой вы нуждаетесь.

+1

Да, это зависит от этого. Но tycho реализует свое разрешение зависимости, используя 'AbstractMavenLifecycleParticipant :: afterProjectsRead', который выполняется сразу же после того, как maven анализирует этот модуль, а не после того, как были построены зависимости. – Dutow

Смежные вопросы