Maven Best Practices - PullRequest
       20

Maven Best Practices

11 голосов
/ 15 июня 2009

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

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

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

Ответы [ 2 ]

11 голосов
/ 12 декабря 2009

Шаг первый : Установите 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

6 голосов
/ 15 июня 2009

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

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

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

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

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

...