Как мой pom находит мой родительский pom, если репозитории настроены в родительском pom? - PullRequest
18 голосов
/ 06 января 2012

Я реорганизовал всю конфигурацию репозитория из моих различных проектов в родительский pom, который я создал для конкретной цели - иметь единую точку конфигурации для таких вещей, как репозиторий и управление распространением. Это должна быть лучшая практика, насколько я понимаю. В развернул мой родительский pom на сервере Nexus, а затем попытался запустить мои дочерние проекты. Они не могут найти моего родителя пом. , , этот вид имеет смысл для меня, так как без родительского ПОМа, которого они не знают о репозитории Nexus. , , Похоже на курицу и яйцо? Я что-то упускаю из виду?

Ответы [ 2 ]

10 голосов
/ 06 января 2012

Это правда, что ваш проект должен знать, где найти репозитории для загрузки его зависимостей.Но перед тем, как перейти к внешним репозиториям, Maven проверит ваш локальный репозиторий, чтобы увидеть, есть ли там необходимые артефакты.Содержит ли ваш локальный репозиторий родительский pom?Если нет, вы можете добавить его, запустив

mvn install

на родительской поме.Возможно, проблема была вызвана развертыванием родительского pom напрямую в Nexus, в обход вашего локального.Вы можете избежать этого в будущем, развернув с помощью

mvn deploy

. Сначала будет установлен артефакт локально, а затем развернут его во внешнем репозитории (в вашем случае Nexus).Подробнее здесь: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

Если вы находитесь в ситуации, когда ваш родительский pom создается и разворачивается другими, это не поможет.Вы можете указать репозитории в pom вашего проекта или в вашем локальном settings.xml.Общий подход заключается в том, что все разработчики должны включать определение своего репозитория в свой локальный файл settings.xml, который указывает на ваш репозиторий Nexus, используя его в качестве зеркала для всех остальных репозиториев.Затем вы можете настроить каждый внешний репозиторий, который вам нужен, в Nexus и позволить ему получать любые зависимости, которые вам нужны.Я не знаком с Nexus, но более подробную информацию о зеркалировании можно найти здесь: http://maven.apache.org/guides/mini/guide-mirror-settings.html

4 голосов
/ 16 ноября 2012

Вы должны поддерживать определения репозиториев для каждого дочернего элемента (модуля maven), это лучший передовой опыт в процессе сборки: «Сделайте сборку переносимой».

Любой разработчик / система должен иметь возможность собирать любой модуль без исходных зависимостей от родительских или других модулей, только со ссылкой на репозиторий.

...