Внутренний репозиторий 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.