Внутренний репозиторий Maven, это действительно сложно?
У меня есть несколько проектов, в которых используется Maven, и я хотел бы запустить внутренний репозиторий в моей рабочей сети. У меня есть несколько библиотек сторонних производителей, которые не могут быть выпущены на волю, а также несколько наших собственных библиотек, которые должны быть доступны в сети (в том числе на нашем сервере TeamCity CI), но не могут быть развернуты вне сети. После небольшого исследования я нашел три основных рекомендации, как это сделать: Archiva, Artifactory и Nexus. Я попробовал каждый из них и не смог добиться успешной сборки любого из моих проектов с использованием внутренних репозиториев, созданных любым из них.
Это заставляет меня поверить, что я что-то неправильно понимаю или делаю что-то не так. Кто-нибудь знает учебник, который проведет меня через настройку и внутренний репозиторий Maven и интегрирует его с моим проектом?
3 ответа
Я бы предложил использовать руководство по оценке Nexus (последняя доступная версия 2.13), которое поставляется с Nexus Pro Installer, но также работает с Nexus Open Source для простых случаев использования прокси и развертывания компонентов.
Примеры также доступны на github и включают настройки для Maven, Ant/Ivy и Gradle. После того, как вы ознакомитесь с примерами и прочитаете руководство, вы сможете легко настроить свои проекты таким же образом.
И, конечно, если есть какие-либо проблемы, вы всегда можете задать их в списке рассылки или пообщаться с разработчиками на hipchat.
Я работал только с 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 позволяет понять, что вы можете делать с сервером репозитория. Единственное, что я нашел хитрым, это то, что некоторая информация относится только к их коммерческому программному обеспечению, и они не слишком усердно работают, чтобы рекламировать разницу.
Менеджеры репозитория, такие как 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.