@relgames
Java Developer

maven: использование модуля в качестве плагина

Есть мульти-модульный maven проект со сложной иерархической структурой. Один из модулей используется в качестве плагина в другом модуле.

Компилироваться не хочет, не может найти этот плагин.
Предыдущие девелоперы решали это через mvn install, запущенный несколько раз, я же так не хочу, хочу сделать нормально.

Если такая конструкция в принципе невозможна, то как сделать правильно? При том что этот модуль/плагин зависит от некоторых других модулей в этом же проекте…

p.s.
Maven 3.0.4
  • Вопрос задан
  • 3027 просмотров
Пригласить эксперта
Ответы на вопрос 3
javax
@javax
Software Architect, Java Developer since 1996
Дело в порядке компиляции. Если плагин проходит «mvn install» первым, то модуль его найдёт
Ответ написан
@1nd1go
Идея в следующем. mvn install сабмитит ваши артефакты в локальный репозиторий. Пока там нужного не окажется, то соответственно он и не найдется. Посему, когда вы вызываете mvn package, то инсталляция модулей в локальный репозторий не происходит.

Вообще, я бы сторонился мультимодульных проектов. Скорее всего, можно обойтись отдельными артефактами и писать их в зависимости. Для этого правда надо использовать еще и командый репозиторий артефактов.
Ответ написан
serso
@serso
Естественно Maven умеет работать с зависимыми друг от друга модулями, но важно чтобы у всех модулей и их зависимостей были правильно прописаны
<groupId>, <artifactId>, <version>, <packaging>/<type>

На этапе сборки Maven покажет что-то типа:
Scanning for projects...
Reactor build order:
module-a
module-b

откуда можно понять как Maven разрулил зависимости.
В вашем случае (когда модуль является плагином), честно скажу что будет не знаю, но почему-то мне кажется, что такой сценарий не предусмотрен разработчиками Maven'а. Поэтому всегда можно (да и нужно, наверное) вынести данный модуль в отдельный проект и установить его один раз.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽