Как мой pom находит мой родительский pom, если репозитории настроены в родительском помпе?

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

Ответы

Ответ 1

Правда, ваш проект должен знать, где найти хранилища для загрузки своих зависимостей. Но прежде чем отправляться во внешние репозитории, 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

Ответ 2

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

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