Лучшие практики Maven

У меня есть пара вопросов о лучших практиках maven и управлении репозиториями.

В моей среде я не хочу выходить в центральный репозиторий maven, а хранить все во внутреннем репозитории. Должен ли я просто требовать, чтобы каждый пользователь помещал информацию в файл settings.xml, который отключает использование моментальных снимков или выпусков из репозитория maven или должен ли он находиться в файле POM?

Кроме того, я хотел бы, чтобы все пользователи переходили в один и тот же корпоративный репозиторий. Должна ли эта информация о репозитории быть помещена в pom или в settings.xml? Если это в пом, как будет знать maven, чтобы перейти в репозиторий, так как ему уже нужно знать, где репозиторий должен получить pom?

Ответ 1

В большом проекте лучше всего иметь несколько репозиториев.

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

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

  • Репозитории проекта содержат артефакты, используемые проектом. Он может содержать артефакты субпроектов и т.д. Каждый разработчик проекта должен иметь возможность публиковать что-то здесь.

Где вы устанавливаете настройки, это вопрос вкуса. Я помещаю эти вещи в settings.xml. Поскольку, если адрес внутренних репозиториев изменился, вам в противном случае пришлось бы изменять проекты.

Ответ 2

Шаг первый. Установите связь на сервере в локальной сети. Он отличный - прост в установке (действительно, всего пару минут!) И прочный. У нас есть ~ 50 инженеров и многие серверы CI, стучащие на нем весь день, и они стабильны в течение многих месяцев. Скажем, вы установили его на сервере под названием "nexus.local" в вашем DNS.

Шаг второй. Скопируйте файл settings.xml из http://www.sonatype.com/books/nexus-book/reference/maven-sect-single-group.html, исправьте имя хоста, если необходимо, зафиксируйте его к вашей системе исходного кода, и сообщите всем вашим разработчикам, чтобы скопировать его в их ~/.m2/settings.xml.

Шаг третий. Правильно настройте проект pom.xml. Вам понадобится "родительский POM", который определяет раздел "distributionManagement", который выглядит примерно так:

  <distributionManagement>
    <snapshotRepository>
      <id>nexusSS</id>
      <name>Nexus Snapshot Repository</name>
      <url>http://nexus.local:8081/nexus/content/repositories/snapshots</url>
    </snapshotRepository>
    <repository>
      <id>nexusRelease</id>
      <name>Nexus Release Repository</name>
      <url>http://nexus.local:8081/nexus/content/repositories/releases</url>
    </repository>
  </distributionManagement>

Шаг четыре. Включите "mvn deploy" - перейдите в свой интерфейс пользователя (что-то вроде http://nexus.local:8081/nexus), нажмите "Пользователи", выберите "развертывание" и укажите пароль. Затем отредактируйте ваш ~/.m2/settings.xml и добавьте следующее:

<settings>
  ...
  <servers>
    <server>
      <id>nexus</id>
      <username>deployment</username>
      <password>PASSWORD</password>
    </server>
  </servers>
</settings>

Убедитесь, что он работает, запустив "mvn deploy", и вы должны были установить артефакты проекта в nexus.

Шаг пятый. Прочтите эту отличную документацию для maven: http://www.sonatype.com/products/maven/documentation/book-defguide