Советы по поддержке внутреннего репозитория Maven?

Я заинтересован в поддержке репозитория Maven 2 для моей организации. Каковы некоторые из указателей и подводных камней, которые могут помочь?

Каким руководящим принципам должны следовать пользователи при настройке стандартов для загрузки или публикации собственных артефактов в репозиторий при выпуске своего кода? Какие виды управления / правила у вас есть для такого рода вещей? Что вы включили об этом в руководство / документацию разработчика?

ОБНОВЛЕНИЕ. Мы поддержали Nexus и остались им очень довольны - следовали большинству рекомендаций Сэла и у нас не было никаких проблем. Кроме того, мы ограничили доступ к развертыванию и автоматизировали сборку / развертывание артефактов моментальных снимков через сервер Hudson CI. Hudson может анализировать все зависимости проекта вверх / вниз по течению, поэтому, если проблема компиляции, сбой теста или какое-либо другое нарушение вызывает сбой сборки, развертывание не произойдет. Будьте утомлены развертыванием моментальных снимков в Maven2 / Maven3, поскольку метаданные изменились между двумя версиями. Стратегия развертывания моментальных снимков «только Hudson» смягчит это. Мы не используем плагин Release, но кое-что сделали вокруг плагина Versions, когда собираюсь переместить снимок для выпуска. Мы также используем m2eclipse, и он, кажется, очень хорошо работает с Nexus, поскольку из файла настроек он может видеть Nexus и знает, как индексировать информацию об артефакте для поиска оттуда. (Хотя мне пришлось настроить некоторые из этих параметров, чтобы он полностью индексировал наши внутренние снимки состояния.) Я также рекомендую вам развернуть исходный jar-файл с вашими артефактами в качестве стандартной практики, если вы заинтересованы в этом. Мы настраиваем это в супер-ПОМ.

ОБНОВЛЕНИЕ 2: я наткнулся на это Технический документ Sonatype, в котором подробно описаны различные этапы внедрения / зрелости, каждый из которых имеет разные цели использования для менеджера репозитория Maven.


person cwash    schedule 24.06.2009    source источник


Ответы (7)


Я бы рекомендовал настроить один сервер nexus как минимум с четырьмя репозиториями. Я бы не рекомендовал артефактор. Бесплатная версия nexus идеально подходит для команды разработчиков из менее 20 человек и менее чем из трех групп. Если у вас больше пользователей, сделайте себе одолжение и заплатите за выпуск Sonatype. Интеграция с LDAP окупается.

  1. Внутренний выпуск
  2. Внутренний снимок
  3. Внутренняя сторонняя сторона для внутреннего кода, полученного из внешних источников, или для одобренных сторонних версий. Поместите сюда драйверы JDBC, javax. * И прочее от клиентов и партнеров.
  4. Внешние прокси общий прокси для всех обычных источников, таких как m2, codehaus и т. д.

Настройте Nexus для выполнения следующих действий для внутренних репозиториев

  1. Удаляйте старые снимки через определенные промежутки времени
  2. Удалять снимки при выпуске
  3. Создайте индексные файлы. Это также ускоряет локальные сборки

Имейте общий файл settings.xml, который использует эти четыре и только эти четыре источника. Если вам нужно выполнить дополнительные настройки, постарайтесь сохранить общую часть файла настроек и используйте профили для различий. Не позволяйте вашим клиентам просто изменять свои собственные настройки, иначе вы получите код, который строится на одной машине, но не на любой другой.

Предоставьте общий прокси-сервер для своих клиентов. В Nexus вы можете добавить несколько прокси к общим источникам Maven (Apache, JBoss, Codehaus) и иметь один прокси, доступный для внутренних клиентов. Это значительно упрощает добавление и удаление источников для ваших клиентов.

Не смешивайте внутренние и сторонние артефакты в одном репозитории. Nexus позволяет добавлять jar-файлы во внутренний репозиторий через веб-интерфейс. Я рекомендую это как способ добавления ваших драйверов JDBC и другого внешнего кода сторонним разработчикам. Пользовательский интерфейс удобен в использовании по сравнению с большинством корпоративного программного обеспечения.

Определите общий родительский POM, который определяет внутренние репозитории моментальных снимков и выпусков, с помощью тега distributionManagement. Я знаю, что многие люди говорят тебе не делать этого. И хотя я открыто признаю, что при этом возникают всевозможные проблемы, все работает нормально, если клиенты будут создавать только релизы и снимки для развертывания в едином внутреннем репозитории.

Если у вас есть существующий неправильно управляемый репозиторий Maven, создайте пятый репозиторий под названием Legacy и поместите туда все репозитории. Настройте задачу cron для удаления старых файлов из устаревших, когда им исполнится год. Это дает всем год, чтобы отказаться от этого и обновить свои помпы.

Установите простой порядок именования внутренних артефактов. Я предпочитаю GroupID Department.Function.Project и ArtifactId для этого componentName. Для внутренних репозиториев com / org / net и название компании, скорее всего, не имеют значения. И неправильно, если компания меняет название. Менее вероятно, что отдел продаж, бухгалтерии или инвентаризации будет переименован.

person sal    schedule 30.10.2009
comment
В качестве обновления Sonatype открыла источник поддержки LDAP для Nexus с выпуском 1.5 в начале 2010 года. - person Ophidian; 03.05.2010
comment
Для тех, кто создает устаревший репозиторий для существующих вещей, как предлагал sal, вот удобная ссылка: blog.sonatype.com/people/2010/04/ - person Conan; 17.05.2013

Обязательно используйте Nexus. :П

Я использовал и Nexus, и Artifactory. Интерфейс для Nexus намного надежнее, он гораздо более настраиваемый и, конечно же, написан Sonatype , который хорошо повторяет практически все, что касается Maven.

При этом Artifactory приличный и работоспособный.

person cgp    schedule 24.06.2009
comment
Можете ли вы объяснить типы функций, которые делают его надежным / настраиваемым с высоты птичьего полета? - person cwash; 24.06.2009
comment
У кого-нибудь есть идея, может ли какой-либо из этих инструментов поддерживать репозиторий Ivy? - person skaffman; 26.07.2009
comment
@skaffman Любой из них должен иметь возможность, поскольку у Ivy есть встроенная возможность читать репозитории Maven 2. Я могу лично убедиться, что Nexus и Archiva хорошо работают с Ivy. - person Ophidian; 04.05.2010
comment
Сами Ant и Ivy развертываются в репозитории Nexus на Apache, поэтому проблем с интеграцией Ivy / Nexus определенно нет. - person Brian Fox; 06.06.2010

Используйте Artifactory.

person stevedbrown    schedule 24.06.2009
comment
Почему? Какие преимущества он дает перед альтернативами? - person cwash; 24.06.2009
comment
Это просто в использовании и бесплатно. Nexus ограничивает возможности бесплатной версии, но если это не вызывает беспокойства (либо набор функций, который не сильно отличается, либо бесплатная часть), это тоже хорошо. Я бросил «Определенно», это слишком сильно, поскольку altCognito призвал меня. - person stevedbrown; 24.06.2009
comment
Я бы не сказал, что Nexus ограничивает возможности, в версии Pro есть дополнительные функции, но большинство из них являются функциями Enterprise, которых просто нет ни в одном другом инструменте. - person Brian Fox; 13.08.2009

Я сам использую Artifactory, и мне нравится пользовательский интерфейс и простота развертывания / обслуживания. Тем не менее, я никогда не использовал Nexus и не могу помочь вам с правильным сравнением функций.

Вот некоторые вещи, которые мне не очень нравятся в Artifactory (имейте в виду, что у Nexus тоже могут быть эти функции):

  1. Приятный интерфейс Web 2.0.
  2. Возможность импортировать локальный репозиторий Maven, чтобы помочь вам начать работу.
  3. Простота интеграции с существующими серверами LDAP для обеспечения безопасности (я большой поклонник единого репозитория для хранения учетных данных).

Учитывая, что на самом деле существует только две основные реализации репозитория Maven, если вы действительно хотите убедиться, что сделали правильный выбор, я бы рекомендовал попробовать оба и решить для себя, что вам больше нравится.

person Jack Leow    schedule 24.06.2009
comment
Спасибо, что взвесили выбор Artifactory против Nexus ... Я согласен, что лучший подход - попробовать оба варианта. Есть ли у вас какие-нибудь советы по поводу того, как пользоваться одним из них? Кроме того, сталкивалась ли ваша организация с какими-либо препятствиями или препятствиями? - person cwash; 24.06.2009
comment
На самом деле никаких конкретных советов, это было настолько просто, что особого смысла в этом не было. У нас не возникло никаких проблем с Artifactory. - person Jack Leow; 25.06.2009

Возможно, это очевидно, но для воспроизводимости разработчики никогда не должны перезаписывать артефакты, они должны быть новыми версиями.

Это также относится к вышестоящим репозиториям. Если вы загрузите Apache-commons версии 1.2.3, вам действительно никогда не следует загружать его снова. Исправления относятся к более поздним версиям и не применяются к существующим версиям.

person cgp    schedule 24.06.2009
comment
Спасибо за разъяснение - я имел в виду это в контексте использования плагина выпуска для публикации версии артефакта, принадлежащего им самим, в репозиторий. Отредактирую вопрос. - person cwash; 24.06.2009

Еще кое-что, что нужно учесть:

http://archiva.apache.org/

person Brad    schedule 25.06.2009
comment
и это: sonatype.com/people/ 2009/07 / - person Brian Fox; 13.08.2009
comment
О, тематическое исследование в блоге sonatype, как беспристрастно. Почему бы вам просто не дать ссылку на продукт и позволить людям принять собственное мнение. - person Brad; 03.09.2009
comment
Арно написал этот блог и первоначально разместил его на своем личном сайте на французском языке. Мы просто попросили его перевести на английский. Как это частичное? - person Brian Fox; 16.12.2009

В качестве ОРИГИНАЛЬНОГО ВОПРОСА (технические вопросы, которые следует учитывать при создании репозитория M2) я бы рекомендовал создать пользователя только для чтения для просмотра репозитория и административного пользователя для каждого администратора (который сказал: один пользователь только для чтения для всех тех пользователей, которые не являются администраторами). Более того, я бы рекомендовал периодически создавать резервные копии (возможно, раз в день?). Это очень важно, если у вас большой репозиторий или вы время от времени устанавливаете свои собственные артефакты.

И последнее, но не менее важное: при добавлении новых удаленных репозиториев вы должны добавить фильтры включения / исключения, чтобы поиск артефактов в репозитории выполнялся быстрее.

Есть много других проблем, которые следует учитывать, но это основные проблемы, с которыми я столкнулся при управлении внутренним репозиторием Maven.

Для справки, я использую как Nexus, так и Artifactory; Я могу четко заявить, что, хотя Nexus очень прост и оперативен (хотя у меня иногда возникают проблемы с процессом установки на Ubuntu), его бесплатная версия не может конкурировать с (бесплатной) версией сообщества Artifactory. За исключением потрясающего пользовательского интерфейса Web 2 от Artifactory, его основные функции, такие как управление безопасностью, периодическое резервное копирование и проблемы с доступностью, намного превосходят возможности Nexus.

person Guy    schedule 30.10.2009