Где лучше всего указать maven репозитории, pom.xml или settings.xml?
Где лучше всего указать требуемые репозитории для проектов maven, pom.xml
или settings.xml
? Каковы плюсы и минусы каждого места? Какая практика?
Мне кажется, что определение репозиториев в POM лучше по нескольким причинам:
- Воспроизводимость: зависимые артефакты поступают из известного местоположения, которое явно объявлено в POM. Существует также меньше возможностей для неправильно сконфигурированных репозиториев пользователей, которые могут вызвать проблемы.
- Переносимость: этот POM будет построен на любой машине с установленным maven. Нет дополнительных требований к настройкам репозитория, настроенным пользователем.
- Простота использования. Легче для новых разработчиков извлекать и строить проект, потому что настройка конфигурации меньше.
Возможно, конфликт заключается в том, что если местоположение репозитория изменится в будущем, необходимо будет установить прокси-серверы или установить исправления выпусков старого программного обеспечения, указав новые местоположения репозитория (или .m2/settings.xml
всегда может предоставлять дополнительные репозитории в качестве в крайнем случае). Однако это похоже на необходимое разветвление хорошей воспроизводимости и переносимости в управлении выпуском, а не на con.
Любые другие мысли?
Ответы
Ответ 1
Где лучше всего указать требуемые репозитории для проектов maven, pom.xml или settings.xml? Каковы плюсы и минусы каждого места? Какая практика?
Я бы лично определил репозитории, необходимые для конкретного проекта в проекте pom.xml
, потому что он поддерживает перенос сборки. Файл settings.xml
должен использоваться только для пользовательских или секретных вещей только по моему мнению. На самом деле, не спрашивая пользователя о размещении мест репозитория, даже если это правильно документировано, каким-то образом побеждает одну из функций maven (прозрачная обработка зависимостей), и мне не нравится эта идея.
Единственный "хороший" вариант использования, который я могу использовать для использования settings.xml
для работы с репозиториями, - это когда у вас есть корпоративный репозиторий и вы хотите, чтобы Maven использовал этот репозиторий вместо публичных. Например, чтобы избежать подключения к любому публичному репозиторию, вы должны объявить корпоративный репозиторий как зеркало для всех из них:
<settings>
...
<mirrors>
<mirror>
<id>proxy-of-entire-earth</id>
<mirrorOf>*</mirrorOf>
<name>Maven Repository Manager running on repo.mycompany.com</name>
<url>http://repo.mycompany.com/proxy</url>
</mirror>
</mirrors>
...
</settings>
Ответ 2
Я рекомендую прочитать эту статью в блоге о предмете.
Ответ 3
Я всегда добавляю URL-адреса в POM и пароли в settings.xml. Если вы поместите URL-адреса в settings.xml, вам потребуются ваши пользователи для обновления файлов в своих локальных системах, если ваш URL-адрес когда-либо изменится. Если URL-адрес указан в вашем POM, вы можете изменить его и нажать новую версию. URL-адреса изменяются чаще, чем большинство может прогнозировать и приводить к разочарованным пользователям, когда разрывается сборка.
Пароли хранятся в settings.xml по понятным причинам. Пароли никогда не должны храниться в контроле версий. Вам понадобятся пароли для функций развертывания mvn для развертывания в удаленных репозиториях.