Что следует использовать для Maven Repo - Nexus или Artifactory?

119

Мы используем Maven для большого процесса сборки (> 100 модулей). Мы храним наши внешние зависимости в системе управления версиями и используем это для обновления локального репо.

Тем не менее, мы готовы перейти на локальное репо, которое может кэшировать централизованно, чтобы нам не приходилось заранее загружать все сторонние ресурсы (но у нас все еще может быть локальное репо для извлечения). Кроме того, мы хотим публиковать наши внутренние артефакты сборки из ночной сборки, чтобы разработчикам не приходилось создавать мир.

Мы рассматриваем Nexus и Artifactory. Каковы причины предпочтения одного перед другим? Есть ли другие, о которых нам следует подумать?

Джон Штауфер
источник
2
Ваша ссылка не слишком объективна, вот ответ с другой стороны blogs.jfrog.org/2009/01/contrasting-artifactory-and-nexus.html
user58773
Я думаю, вам следует подумать о простом http-сервере, таком как Apache или nginx. Это «Скучная технология» ( mcfunley.com/choose-boring-technology ).
Йохан Валлес,
5
@JohanWalles: в этом контексте больше похоже на «Неудобная технология, снижающая производительность».
Прииду Нимре

Ответы:

74

Я не знаю об Artifactory, но вот причины, по которым я использую Nexus:

  • Мертвая простая установка (и, начиная с 1.2, мертвое простое обновление тоже)
  • Очень хороший веб-интерфейс
  • Легко обслуживать, почти не требует административных расходов
  • Предоставляет вам RSS-потоки недавно установленных, поврежденных артефактов и ошибок
  • Он может сгруппировать несколько репозиториев, так что вы можете зеркалировать несколько источников, но вам понадобится только одна или две записи в вашем settings.xml
  • Развертывание из Maven работает из коробки (нет необходимости во взломах WebDAV и т. Д.).
  • это бесплатно
  • Вы можете перенаправить пути доступа (например, для некоторых сломанных pom.xml требуется «abc» из «xxx»). Вместо исправления POM вы можете исправить ошибку в Nexus и перенаправить запрос туда, где на самом деле находится артефакт.
Аарон Дигулла
источник
3
Nexus имеет отличный веб-интерфейс для создания регулярно запланированных заданий, которые могут очищать SNAPSHOTS. В Artifactory этого нет (пока).
HDave
119

Я уверен, что если вы говорите только о хранении двоичных файлов из " mvn deploy", оба будут в порядке.

Мы очень широко используем Artifactory со всеми обновлениями на этом пути. Множество проектов, множество развернутых снимков и прокси внешних репозиториев. Ни одной проблемы. Мне трудно объяснить, как другие люди испытывают проблемы с его БД, индексированием или чем-то еще. Ничего подобного с нами никогда не случалось. Кроме того, Artifactory позволяет хранить данные на диске и использовать только БД для хранения метаданных, это довольно гибко ( подробнее см. Здесь ).

Что делает эти приложения очень отличаются их подход к интеграции с другими инструментами и технологиями сборки. Nexus и Sonatype в значительной степени привязаны к Maven и m2eclipse. Они игнорируют все остальное и только недавно начали работать над собственной проприетарной интеграцией Hudson (см. Их веб-семинар по Maven 3 ). РЕДАКТИРОВАТЬ: это больше не так, поскольку в 2017 году Nexus предоставляет гораздо большую поддержку других инструментов сборки. Конец редактирования.

Artifactory обеспечивает отличную интеграцию Hudson, TeamCity и Bamboo , а также поддержку Gradle / Ivy . Итак, хотя Nexus ничего не дает вам, когда вы выходите из «зоны комфорта» Sonatype (Maven, m2eclipse), Artifactory объединяет все основные инструменты сборки и сотрудничает со всеми ними.

Фактически, возможность развертывать артефакты сборки из Hudson, когда работа завершена, а не " mvn deploy" является огромной разницей: плагин Artifactory Hudson выполняет атомарное развертывание всех артефактов сразу , только когда задание сборки завершено успешно. " mvn deploy" запускается после каждого модуля и может развернуть частичный набор артефактов, если задание сборки завершится неудачно в середине. Развертывание из Maven по завершении модуля, а не с сервера сборки по завершении задания - действительно плохой поступок.

Как видите, Artifactory думает «нестандартно», в то время как Nexus думает «изнутри» и заботится только об артефактах Maven и Maven.

Еще кое-что, что делает Artifactory более доступным, - это их облачное решение Artifactory Online . Примерно за 80 долларов в месяц у вас есть собственный экземпляр Artifactory, вам не нужно выделять для него какой-либо сервер.

Artifactory имеет простой и понятный REST API , не знаю, как он работает для Nexus. Edit Nexus также имеет REST API, которым вы тоже можете легко пользоваться.

Подводя итог, я думаю, что для базового хранения артефактов Maven подходят оба варианта. Но в то время как Nexus перестает быть строго «менеджером репозитория Maven», Artifactory продолжает и продолжает оставаться общим «хранилищем двоичных файлов» для двоичных файлов любого типа, от любого инструмента сборки и CI-сервера.

Евгений Гольдин
источник
9
Извините, но здесь я чувствую запах FUD. Nexus, конечно, не «привязан к Maven и m2eclipse», он отлично интегрируется с Jenkins, TeamCity и Bamboo. У него простой и понятный REST API; каждая функция Nexus представлена ​​как конечная точка REST. Неверно сказать, что Nexus «заботится только об артефактах Maven и Maven»; он также поддерживает .Net (NuGet), Gradle / Ivy, OSGI и может размещать репозитории Yum RPM. Что касается хранения артефактов, tar, zip, rar, par включены вместе со стандартными типами архивов Java.
RCross
25
Чувак, этот ответ был отправлен 4 года назад :) Это уже не про Maven? Тогда молодец!
Евгений Гольдин
3
@EvgenyGoldin Не делает свой комментарий менее актуальным (кроме FUD-части ^^).
OddDev
4
Теперь, когда этому посту семь лет, а API-интерфейсы REST более или менее обязательны для инструментов, Nexus все еще не справляется с этим. Используя Nexus3, остальные API в основном представляют собой rpc; вам нужно загрузить небольшой скрипт, чтобы выполнить то, что вы хотите сделать. С другой стороны, Artifactory, похоже, предлагает хорошо продуманный API с хорошей документацией.
thecoshman
27

Artifactory поддерживает оба файловой системы, так и хранилища баз данных. Хранилище основано на контрольной сумме, и идентичные двоичные файлы хранятся только один раз, независимо от того, сколько раз они появляются в репо, что делает Artifactory более эффективным с точки зрения хранения. Перемещение и копирование также очень дешевы из-за этой архитектуры (в Nexus нет REST для перемещения / копирования - вам нужно переместить материал в файловую систему, а затем выполнить корректирующие действия в репо, чтобы сообщить ему об изменении содержимого).

Еще одним важным отличием Artifactory является уникальная интеграция с Hudson и TeamCity для сбора информации о развернутых артефактах, разрешенных зависимостях и данных среды, связанных с запусками сборки, что обеспечивает полную отслеживаемость сборки.

Йоав Ландман
источник
1
Artifactory также поддерживает постоянство S3.
Тим Феррелл,
@TimFerrell, не соответствует действительности, но по цене, непомерно высокой для большинства магазинов, в которых я обычно работаю.
Сандер Верхаген
21

Artifactory хранит артефакты в базе данных, а это означает, что если что-то пойдет не так, все ваши артефакты исчезнут. Nexus использует плоский файл для ваших драгоценных артефактов, поэтому вам не нужно беспокоиться о том, что все они потеряны.

Брайан Фокс
источник
3
Это было то, что имело значение и для нас. Я полагаю, что это в основном просто паранойя, но приятно знать, что систему будет легко проверить в любое время.
Джереми Хуискамп
4
Из-за этого мы планируем перейти с Artifactory на Nexus.
Kariem
2
+1 от другой жертвы коррупции; С тех пор я использовал Archiva и Nexus, и оба кажутся довольно надежными.
SimonJ 03
73
Этот ответ устарел. Теперь Artifactory можно настроить для хранения объектов в файловой системе.
М. Дадли
37
Пока я использовал Artifactory, у него была поддержка файловой системы для реальных артефактов. Но я все равно использую базу данных, потому что наш главный сервер базы данных реплицируется и создается резервная копия. Я не понимаю, почему хранилище файловой системы по своей природе безопаснее, чем база данных. Ничего против Нексуса, просто пытаюсь прояснить это.
Джошуа Дэвис,
9

Если вам нужны «профессиональные» функции любого из них (например, промежуточные репозитории, продвижение артефактов, NuGet), тогда вам необходимо рассмотреть различные модели ценообразования, которые отображаются на их веб-сайтах.

В итоге:

  • Artifactory Pro
    • вы платите за сервер
    • вы можете заплатить больше за увеличенное время обслуживания
  • Nexus Pro
    • вы платите за рабочее место , то есть сколько разработчиков загружают артефакты
    • служба поддержки работает только с понедельника по пятницу с 08:00 до 2000 по восточноевропейскому времени, независимо от того, сколько вы платите

Независимо от того, сколько у вас пользователей, Nexus Pro предлагает услугу поддержки, которая в целом эквивалентна "Silver Value Pack" Artifactory за 7 450 долларов в год.

За 7450 долларов в год вы сможете купить примерно 67 мест Nexus Pro (1-50 по 108 долларов, остальные по 120 долларов).

Таким образом, только по цене и поддержке Nexus Pro имеет смысл, пока вы не наберете 67 пользователей, после чего Artifactory станет более дешевым вариантом.

Если вы выполняете всю поддержку самостоятельно; однако этот волшебный момент составляет около 23 пользователей (самая базовая поддержка Artifactory стоит 2750 долларов в год).

RCross
источник
8

Недавно я провел небольшое исследование об Artifactory 2 и Nexus 1.3. Я перечислю здесь основные отличия, которые я обнаружил:

  • Artifactory хранит метаданные и, возможно, файлы в БД, Nexus записывает непосредственно в файловую систему. Есть плюсы. и минусы. для каждого подхода. БД поддерживает транзакции, в то время как файлы, хранящиеся в ФС, доступны напрямую.
  • Artifactory предъявляет более высокие системные требования, особенно к месту на диске.
  • В Artifactory есть поддержка LDAP, а в Nexus только в платной версии. С другой стороны, бесплатный плагин LDAP для Nexus доступен в коде Google.

Наиболее полное сравнение: http://binary-repositories-comparison.github.io/

Сергей
источник
На самом деле Artifactory теперь под лицензией GPL.
Брайан Фокс,
5
Nexus OSS поддерживает Ldap для нескольких выпусков.
Брайан Фокс
1
Артифактическая поддержка групп LDAP по-прежнему является профессиональной функцией: jfrog.com/confluence/display/RTF/LDAP+Groups
Стивен Магана-Зук,
1
Обновление от июля 2015 года: Codehaus мертв, поэтому матрица перенесена на binary-repositories-comparison.github.io
JBaruch
7

Вы должны использовать Artifactory. Его последняя версия была настоящим скачком. Вы можете постепенно создавать резервные копии своих репозиториев, что означает, что вы можете сохранять и поддерживать все свои артефакты. Он имеет простой в использовании веб-интерфейс и очень прост в настройке, мне очень понравилось проверять вышла новая версия 2.0


источник
5

С точки зрения учащихся, я отмечаю некоторые специфические различия между ними.

  1. Развертывание Sonatype .war не поддерживается на сервере приложений Jboss в то время, хотя оно работает под Tomcat.
  2. В настоящее время Sonatype не предлагает мне образ машины Amazon (AMI), который я мог бы быстро протестировать.
  3. Artifactory AMI предоставляется Bitnami и занимает всего несколько минут, чтобы встать, и еще несколько минут, чтобы настроить, возможно, несколько десятков минут в зависимости от того, чего вы пытаетесь достичь.
  4. Artifactory предлагает SaaS-версию Artifactory в облаке, чтобы вы могли сосредоточиться на выполнении задач, а не на инфраструктуре.
  5. У меня нет опыта работы с Nexus, но я нашел Artifactory очень интуитивно понятным и простым в настройке, по крайней мере, на начальном этапе.
  6. Добавлено - я действительно отмечаю, что Руководство пользователя Artifactory, которое может подойти для опытного профессионала, немного освещено для некоторых подробных объяснений. Например, сначала нужно распаковать, а затем добавить репозиторий, скажем, RedHat Jboss EAP Enterprise Repo. Все идет нормально, но потом, когда я попытался просмотреть импортированные артефакты, Artifactory сообщает об отсутствии артефактов? Никаких ошибок или предупреждений, поэтому я ищу объяснение. Это нормально или ненормально? Простое объяснение в документации может быстро указать в правильном направлении. Как хороший участник, я добавляю эти комментарии к проекту для других начинающих.
user3175893
источник
3

Не говоря уже о политике / религии, для некоторых организаций лицензирование имеет значение.

Nexus - это GPL, теперь AGPLv3, а теперь Eclipse Public License (EPL) .

Artifactory имеет лицензию Apache LGPLv3 лицензированной с версии 2.1 продукта.

Вы также можете рассмотреть Archiva , просто для сравнения. Это лицензированный Apache 2.0.

Зак Томпсон
источник
5
Да это тролль. Отговаривает ли тот факт, что Linux является лицензией GPL организации его использовать? Есть разница между включением инструмента в программу и его использованием .
Тим О'Брайен,
1
Я не хотел троллить, но я ценю вашу точку зрения. Я удалил превосходную степень из текста.
Зак Томпсон
4
@tobrien: FWIW, некоторые организации (включая мою) очень осторожно относятся к использованию программного обеспечения под GPL, опасаясь раскрытия закона. Я не хочу обсуждать (отсутствие) мудрости такой политики - я подозреваю, что мы полностью согласны. Просто укажите, что для некоторых это важно.
Зак Томпсон
1
Начиная с версии 2.1, Artifactory в любом случае является LGPL.
Брайан Фокс,
1
@Zac @ user145026 Связываете ли вы свой код с библиотеками Nexus ?? Если нет, то я не понимаю, почему лицензия GPL является проблемой.
Паскаль Тивент,
2

Я вижу, что использование Nexus растет, в то время как использование Artifcatory в целом остается неизменным.

введите описание изображения здесь

Изображение взято отсюда http://blog.sonatype.com/2014/11/42000-nexus-repository-managers-and-growing/

Также есть матричное сравнение http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix

rofrol
источник
3
1. Это изображение неточно, так как оно основано только на вызовах Maven Central. Есть загрузки помимо Maven Central. 2. Codehaus теперь мертв, матрица перенесена на binary-repositories-comparison.github.io
JBaruch
Ницца. У тебя есть картинка получше?
rofrol
Вы можете найти некоторые цифры здесь .
JBaruch
1
Смещен в сторону Nexus, смещен в сторону jfrog - я бы не стал доверять ни одному набору чисел.
Кайл Виринг
-2

И Artifactory, и Nexus имеют более или менее схожий набор функций, но поддержка LDAP Artifactory делает его более привлекательным по сравнению с Nexus. Хотя у Nexus тоже есть поддержка LDAP, но в платной версии :-(

Винод Сингх
источник
1
В коде Google есть плагин LDAP с открытым исходным кодом для Nexus.
Брайан Фокс,
3
Поддержка LDAP теперь есть в бесплатной версии Nexus, начиная с версии 1.5.0
Дэвид Руссел
-2

Хммм ... мой опыт работы с artifactory ужасен ... но я относительно новичок, так что относитесь к этому с недоверием. Моя общая жалоба заключается в том, что файлы jar, недавно загруженные в Artifactory, не индексируются сразу - как в течение нескольких часов - и, похоже, нет хорошего способа принудительно это сделать. Я пробовал разные вещи, которые, казалось, должны были сработать, но не вышло. Я работаю с m2eclipse, добавляя зависимости в проект, который я конвертирую из ant. Когда я пытаюсь добавить банку, которую я только что добавил в artifactory, я ожидаю, что она появится в качестве выбора в селекторе, но это не так.

Коллега сказал мне, что они установили нексус, и пока он им нравится ... но я пока не могу за это поручиться. Я собираюсь установить его на Linux, как только ИТ-специалисты найдут его.

user494078
источник
3
Вы имеете в виду индексы Nexus, которые загружаются и используются IDE, в вашем случае - плагином m2eclipse. Эти индексы периодически загружаются на клиенты и не предназначены для использования при каждом развертывании. Artifactory позволяет вам запланировать эти обновления индекса или принудительно. К вашему сведению, индексы, используемые поиском Artifactory (UI / REST), отличаются и обновляются немедленно и атомарно в рамках развертывания новых артефактов. Такие инструменты, как IntelliJ, используют это, выполняя поиск в репозитории, а не в локально кешированном индексе, используя REST API Artifactory.
Йоав Ландман