Внутренний репозиторий Maven, действительно ли это сложно?
У меня есть несколько проектов, которые используют Maven, и я хотел бы запустить внутренний репозиторий в своей рабочей сети. У меня есть несколько библиотек, которые принадлежат третьим сторонам и не могут быть выпущены в дикую природу, а также несколько собственных библиотек, которые должны быть доступны в сети (в том числе на нашем сервере TeamCity CI), но не могут быть развернуты за пределами сети. После небольшого исследования я нашел три основные рекомендации о том, как это сделать: Archiva, Artifactory и Nexus. Я пробовал каждый и не смог добиться успешной сборки любого из моих проектов, используя внутренние репозитории, созданные любым из них.
Это заставляет меня думать, что я что-то недопонимаю или что-то не так. Кто-нибудь знает учебник, который проведет меня через настройку и внутренний репозиторий Maven и интегрирует его с моим проектом?
Ответы
Ответ 1
Я бы предложил использовать Руководство по оценке Nexus (последняя доступная версия 2.13), который поставляется с Nexus Pro Installer, но также работает с Nexus Open Source для простых случаев использования проксирования и развертывания компонентов.
Примеры также доступны на github и включают установки для Maven, Ant/Ivy и Gradle. После того, как вы посмотрите на примеры и прочитайте руководство, вы сможете легко настроить свои проекты.
И конечно, если есть какие-то проблемы, вы всегда можете спросить в списке рассылки или пообщаться с разработчиками на hipchat
Ответ 2
Я работал только с Nexus, но мне было очень легко установить:
- Перейдите в http://www.sonatype.org/nexus/go, чтобы загрузить версию OSS
- Получить дистрибутив "WAR"
- Установите сервлет в моей установке Tomcat через Диспетчер веб-приложений
В этот момент я могу посетить http://myserver:8080/nexus
, чтобы увидеть все работающее.
Для поверхностной настройки я добавляю пароль по умолчанию к моему settings.xml
:
<servers>
<server>
<id>my-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>my-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
и в моем файле POM:
<distributionManagement>
<snapshotRepository>
<id>my-snapshots</id>
<name>My internal repository</name>
<url>http://myserver:8080/nexus/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>my-releases</id>
<name>My internal repository</name>
<url>http://myserver:8080/nexus/content/repositories/releases</url>
</repository>
</distributionManagement>
Чтобы выйти за рамки этого, кривая обучения скапливается совсем немного, но я нашел онлайн-книги Sonatype довольно хорошими. Управление репозиториями с помощью Nexus - это тот, кто понимает, что вы можете делать с сервером репозитория. Единственное, что мне показалось сложным, это то, что часть информации относится только к их коммерческому программному обеспечению, и они не слишком усложняются, чтобы рекламировать разницу.
Ответ 3
Менеджеры хранилищ, такие как Archiva и Nexus, - это не просто внутренний репозиторий. Они служат в качестве прокси-серверов, которые избегают обращения к центральному или другому внешнему хранилищу Maven.
Для всего внутреннего репозитория все, что вам нужно, это сетевое или HTTP-доступное местоположение, которое имеет структуру репозитория Maven. Затем вы ссылаетесь на него как на другой репозиторий в файле настроек.
<repository>
<id>my-internal-repo</id>
<url>http://myrepo.mycompany.com/</url>
</repository>
Подробнее в документации Maven на http://maven.apache.org/guides/introduction/introduction-to-repositories.html.