Лучшие практики 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