Лучшие практики Maven
-
13-09-2019 - |
Вопрос
У меня есть пара вопросов о лучших практиках Maven и управлении репозиториями.
В моей среде я не хочу обращаться к центральному репозиторию maven, а хочу хранить все во внутреннем репозитории.Должен ли я просто потребовать от каждого пользователя поместить информацию в файл settings.xml, который отключает использование снимков или выпусков из репозитория maven, или это должно быть в файле POM?
Кроме того, я хотел бы, чтобы все пользователи обращались к одному и тому же корпоративному репозиторию.Следует ли помещать эту информацию о репозитории в pom или в settings.xml?Если он находится в pom, как maven узнает, что нужно перейти в репозиторий, поскольку ему уже нужно знать, где находится репозиторий, чтобы получить pom?
Решение
В большом проекте лучше всего иметь несколько репозиториев.
Прокси/кэш компании будет хранить загруженные jar-файлы локально, чтобы компания не зависела от доступности внешних сайтов.Доступ к нему осуществляется как к обычному репозиторию, но это шлюз к публичным репозиториям.
Репозиторий компании для выпущенных библиотек ограничен, он содержит внутренние библиотеки.Это фреймворки, которые «продвигаются» из репозиториев проектов в репозиторий компании, поскольку они могут быть полезны для всех проектов.
Репозитории проекта содержат артефакты, используемые проектом.Он может содержать артефакты подпроекта и т. д.Каждый разработчик проекта должен иметь возможность публиковать здесь что-то.
Куда ставить настройки — дело вкуса.Я поместил эти вещи в файл 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