Maven dependencyManagement в родительском при использовании дочернего в качестве модуля не работает из-за порядка выполнения

Есть ли более простой способ заставить maven построить родителя перед модулями?

Вариант использования: я пытаюсь понять, как лучше всего решить следующую проблему.

У меня есть два проекта, которые я назову «A» и «B». У них обоих есть родитель, которого я назову «P».

«P» имеет управление зависимостями для общих ресурсов, что позволит использовать одну и ту же версию для общих артефактов.

«P» также используется для запуска «A» и «B» в качестве модулей.

Проблема: когда добавляется новый артефакт, я добавляю версию в «P» и зависимость в «A» (например). теперь, когда я делаю чистую установку maven, я получаю «dependencies.dependency.version» для .

Это связано с тем, что maven сначала собирает свои модули перед собой, а затем у «A» нет версии.

Я знаю, что могу поставить "A" под следующим: ../ и это работает (но не всегда).

Вернемся к моему вопросу: есть ли более простой способ заставить maven построить родителя перед модулями?


person Ika    schedule 19.06.2012    source источник


Ответы (2)


Я обнаружил, что моя проблема заключалась не только в относительном пути, как упоминалось выше, но и в том, что моя родительская версия pom была переменной $ {version} и не была заменена во время сборки.

Чтобы решить эту проблему, я жестко закодировал родительскую версию в родительском POM.

person Ika    schedule 05.07.2012

В вашем случае это ситуация, когда родительский модуль == агрегатор модулей, Maven должен создавать родительские модули перед их модулями, если они находятся в одном и том же реакторе сборки, и это обычно означает, что вы должны собирать все модули из уровня проекта P . И даже если вы этого не сделаете, родители должны быть правильно разрешены, если у вас есть правильные теги <relativePath> в ваших <parent> блоках в модулях pom.xml (см. здесь, например). По умолчанию там стоит значение .., что означает, что родитель артефакта находится в родительском каталоге в файловой системе.

person Michał Kalinowski    schedule 19.06.2012