Подтвердить что ты не робот

Где лучше всего указать maven репозитории, pom.xml или settings.xml?

Где лучше всего указать требуемые репозитории для проектов maven, pom.xml или settings.xml? Каковы плюсы и минусы каждого места? Какая практика?

Мне кажется, что определение репозиториев в POM лучше по нескольким причинам:

  • Воспроизводимость: зависимые артефакты поступают из известного местоположения, которое явно объявлено в POM. Существует также меньше возможностей для неправильно сконфигурированных репозиториев пользователей, которые могут вызвать проблемы.
  • Переносимость: этот POM будет построен на любой машине с установленным maven. Нет дополнительных требований к настройкам репозитория, настроенным пользователем.
  • Простота использования. Легче для новых разработчиков извлекать и строить проект, потому что настройка конфигурации меньше.

Возможно, конфликт заключается в том, что если местоположение репозитория изменится в будущем, необходимо будет установить прокси-серверы или установить исправления выпусков старого программного обеспечения, указав новые местоположения репозитория (или .m2/settings.xml всегда может предоставлять дополнительные репозитории в качестве в крайнем случае). Однако это похоже на необходимое разветвление хорошей воспроизводимости и переносимости в управлении выпуском, а не на con.

Любые другие мысли?

4b9b3361

Ответ 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 для развертывания в удаленных репозиториях.