Как собрать один модуль в сценарии двух многомодульных проектов Maven - PullRequest
0 голосов
/ 05 августа 2010

Как скомпилировать один модуль в следующем сценарии двух многомодульных проектов Maven A и B.

Оба проекта расположены в одном каталоге, поэтому структура каталога выглядит следующим образом:

root
|-- A
|   |-- A1
|   |-- A2
|   `-- A3
`-- B
    |-- B1
    `-- B2

Все каталоги, кроме root, имеют свои собственные файлы pom.xml, и каждый подмодуль ссылается на свой родительский модуль (у A1 есть родительский A и т. Д.), А родительский ссылается на свои подмодули (у A есть модули A1-A3),У меня проблема в том, что A1 зависит также от B1 , так как проект B - это набор утилит, которые я хочу использовать в других проектах.

У меня вопрос как мнеправильно ссылаться на B1 , чтобы я мог собрать A1 без предварительной установки B1 .Я имею в виду, что я хочу собрать A1 со всеми его зависимостями, используя одну команду maven.

Мое текущее решение - сделать B1 модулем A (через ссылку на модуль ../B/B1).Тогда я могу позвонить mvn package из каталога A, и он работает нормально.Но создание всего проекта А иногда занимает очень много времени.Поэтому я хотел бы построить только А1 + Депс.Как я могу это сделать?Когда я вызываю mvn reactor:make -Dmake.folders=A1 из каталога AI, получаю следующую ошибку сборки:

Reason: Cannot find parent: B:B for project: B:B1:jar:1.0-SNAPSHOT for project B:B1:jar:1.0-SNAPSHOT

Так что кажется, что maven неожиданно больше не может найти родительский модуль B1 при использовании плагина реактора.Кто-нибудь знает решение для этого или альтернативный подход для ссылки на подмодуль из другого проекта, который позволяет собирать A1 способом, описанным выше?

Обратите внимание, я не хочу устанавливать супер модуль в root, которыйвключает в себя модули A и B, потому что это pom-файл, потому что каждый пользователь, который проверяет A и B, может также иметь другие проекты в своем корневом каталоге и, следовательно, должен будет написать свой собственный pom-файл для root.

1 Ответ

0 голосов
/ 05 августа 2010

Просто создайте корневую помпу, в которой есть модули, и сделайте ссылку на родителя в A и B, тогда это будет работать.В противном случае это не работает.

...