Внутренний репозиторий 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, но мне было очень легко установить:

  1. Перейдите по http://www.sonatype.org/nexus/go, чтобы загрузить версию OSS.
  2. Получить дистрибутив "WAR"
  3. Установите сервлет в моей установке 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.

Другие вопросы по тегам