Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

Куда ставить настройки — дело вкуса.Я поместил эти вещи в файл settings.xml.Потому что если адрес внутренних репозиториев изменится, вам в противном случае придется модифицировать проекты.

Другие советы

Первый шаг:Установите Nexus на сервер в вашей локальной сети.Он превосходен — прост в установке (правда, всего за пару минут!) и надежен.У нас около 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» — перейдите в пользовательский интерфейс Nexus (что-то вроде 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top