Чи варто використовувати Nexus або Artifactory для Maven Repo?


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: у цьому контексті більше нагадує "Незручну технологію та зменшення продуктивності".
Priidu Neemre

Відповіді:


74

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

  • Мертва проста установка (а з 1.2, мертве просте оновлення теж)
  • Дуже хороший веб-інтерфейс
  • Легкий в обслуговуванні, майже без адміністративних витрат
  • Надає вам RSS-канали нещодавно встановлених, зламаних артефактів та помилок
  • Він може згрупувати кілька сховищ, щоб ви могли відобразити кілька джерел, але вам потрібно лише один або два записи у ваших налаштуваннях.xml
  • Розгортання з Maven працює нестандартно (немає необхідності в хаках WebDAV тощо).
  • це безкоштовно
  • Ви можете перенаправляти шляхи доступу (тобто для деяких зламаних pom.xml потрібен "abc" з "xxx"). Замість виправлення POM, ви можете виправити помилку в Nexus і перенаправити запит на місце, де справді знаходиться артефакт.

3
Nexus має чудовий веб-інтерфейс для створення регулярно запланованих завдань, які можуть очистити SNAPSHOTS. У артефабриці цього немає (поки).
HDave

118

Я впевнений, що якщо ви будете говорити лише про збереження бінарних файлів з " mvn deploy" обох, буде добре.

Ми дуже широко використовуємо Artifactory з усіма оновленнями на цьому шляху. Багато проектів, численні розгорнуті знімки та зовнішні репозиції. Немає жодної проблеми. Мені важко пояснити, як інші люди відчувають проблеми зі своєю БД, індексацією чи чим-небудь іншим. Нічого подібного ніколи не траплялося з нами. Також Artifactory дозволяє зберігати дані на диску і використовувати лише БД для зберігання метаданих, він досить гнучкий ( докладніше див. Тут ).

Що робить ці програми дуже різними - це їх підхід до інтеграції з іншими інструментами та технологіями побудови. Nexus і Sonatype в значній мірі заблоковані на Maven і m2eclipse. Вони ігнорують будь-що інше і лише нещодавно почали працювати над власною фірмовою інтеграцією Хадсона (див. Їх вебінар Maven 3 ). EDIT: Це вже не так, оскільки 2017 Nexus надає набагато більшу підтримку іншим інструментам збирання End of Edit

Artifactory забезпечує приголомшливу інтеграцію Хадсона, TeamCity та Bamboo та підтримку Gradle / Ivy . Тож поки Nexus нічого не дає вам, як тільки вийдете з "зони комфорту" Sonatype (Maven, m2eclipse), Artifactory підтримує і співпрацює з усіма основними інструментами побудови.

Насправді, можливість розгортати артефакти з Хадсона, коли робота закінчена, а не " mvn deploy", це величезна різниця: Штучний плагін Гудзона робить атомно-схожий розгортання всіх артефактів одразу лише тоді, коли завдання зі збірки закінчено успішно. " mvn deploy" запускається після кожного модуля і може розгорнути частковий набір артефактів, якщо завдання збірки не вдається посередині. Розгортання з Maven на завершення модуля, а не з сервера збірки на завершення роботи - це дійсно погано.

Як бачите, Artifactory думає "поза коробкою", тоді як Nexus думає "всередині коробки" і дбає лише про артефакти Мейвена та Мейвена.

Щось ще робить Artifactory доступнішим - це їхнє хмарне рішення Artifactory Online . Приблизно за 80 доларів США на місяць у вас є власний екземпляр Artifactory, не потрібно присвячувати йому жодного сервера.

Artifactory має простий і простий API REST , не знаю, як це працює для Nexus. Редагувати Nexus також є API REST, який ви також можете легко використовувати.

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


9
Вибачте, але тут паню FUD. Nexus, безумовно, не "заблокований на Maven і m2eclipse", він ідеально поєднується з Jenkins, TeamCity та Bamboo. Він має простий і зрозумілий API REST; кожна функція Nexus виставляється як кінцева точка REST. Неправда сказати, що Nexus "дбає лише про артефакти Мейвена та Мейвена"; він також підтримує .Net (NuGet), Gradle / Ivy, OSGI і може розміщувати сховища Yum RPM. Що стосується зберігання артефактів, tar, zip, rar, par включаються разом зі стандартними типами архіву Java.
RCross

25
Чувак, ця відповідь була опублікована 4 роки тому :) Це вже не про Мейвен? Добре для цього тоді!
Євгеній Голдін

3
@EvgenyGoldin Не робить його коментар менш релевантним (крім частини FUD ^ ^).
OddDev

4
Тепер, коли цій посаді виповнилося сім років, а REST apis є більш-менш обов'язковим для використання інструментів, Nexus все ще схоже на це. Використання Nexus3 API відпочинку в основному є rpc; вам потрібно завантажити невеликий сценарій, щоб виконати те, що ви хочете зробити. З іншого боку, Artifactory може виявити продуманий API, який має гарну документацію.
thecoshman

27

Артифактор підтримує обох файлову систему, так і резервні копії бази даних. Зберігання - це контрольна сума, і однакові бінарні файли зберігаються лише один раз, незалежно від того, скільки разів вони з’являються у репо-репортажі, що робить Artifactory більш ефективним для зберігання. Переміщення та копіювання також дуже дешеві через цю архітектуру (у Nexus немає REST для переміщення / копіювання - вам потрібно перемістити речі у файловій системі, а потім виконати коригувальні дії на репо, щоб повідомити, що вміст змінився).

Ще один важливий диференціатор - Artifactory має унікальну інтеграцію з Хадсоном та TeamCity для збору інформації про розгорнуті артефакти, вирішені залежності та дані про середовище, пов’язані з прогонами збірки, що забезпечує повну відстежуваність збірки.


1
Artifactory також підтримує стійкість S3.
Тім Феррелл

@TimFerrell, не неправда, але ціною, яка надмірно дорога для більшості магазинів, в яких я працюю.
Сандер Верхаген

21

Artefactory зберігає артефакти в базі даних, а це означає, що якщо щось піде не так, всі ваші артефакти зникнуть. Nexus використовує плоский файл для ваших дорогоцінних артефактів, тому вам не доведеться турбуватися про те, що всі вони втратяться.


3
Саме це змінило і для нас. Я думаю, що це здебільшого просто параноїя, але приємно знати, що перевірити систему буде легко в будь-який час.
Джеремі Хуйскамп

4
Через це ми плануємо перейти від Artifactory до Nexus.
Карієм

2
+1 від іншої жертви корупції; Я використовував Archiva та Nexus з тих пір, і обидва здаються досить міцними.
SimonJ

73
Ця відповідь застаріла. Artifactory тепер може бути налаштований для зберігання об'єктів у файловій системі.
М. Дадлі

37
Поки я використовував Artifactory, у нього була підтримка файлової системи для власне артефактів. Але я все одно використовую базу даних, тому що наш основний сервер баз даних реплікується та створюється резервна копія. Я не бачу, наскільки сховище файлової системи по суті безпечніше, ніж база даних. Нічого проти Nexus, просто намагаюся це очистити.
Джошуа Девіс

9

Якщо вам потрібні "Pro" функції будь-якого (наприклад, постановка репостів, просування артефактів, NuGet), то вам потрібно врахувати різні моделі ціноутворення, які відображаються на їх веб-сайтах.

Підсумовуючи:

  • Штучний про
    • ви платите за один сервер
    • ви можете заплатити більше за збільшені години обслуговування
  • Nexus Pro
    • ви платите за місце , тобто скільки розробників, які завантажують артефакти
    • Служба підтримки працює з пн-пт 0800-2000 ET, незалежно від того, що ви платите

Незалежно від того, скільки користувачів у вас є, Nexus Pro пропонує службу підтримки, яка в цілому еквівалентна "Срібному пакету вартості" $ 4750 / рік Artifactory.

$ 7,450 / рік придбає вам приблизно 67 місць Nexus Pro (1-50 @ 108 $, решта @ 120 $).

Щодо ціни та підтримки, Nexus Pro має сенс, поки ви не знайдете 67 користувачів, і тоді Artifactory стає дешевшим варіантом.

Якщо ви робите всю підтримку в будинку; однак ця магічна точка - це близько 23 користувачів (основна підтримка Artifactory - це 2750 доларів на рік).


8

Я ретельно провів кілька досліджень щодо Artifactory 2 та Nexus 1.3. Я перелічу тут основні відмінності, які я знайшов

  • Артифактор зберігає метадані та необов'язково файли в БД, Nexus записує безпосередньо у файлову систему. Є плюси. і мінуси. для кожного підходу. БД підтримує транзакції, тоді як у файлах, що зберігаються у FS, можна отримати доступ безпосередньо.
  • Artifactory має більш високі системні вимоги, особливо для дискового простору.
  • У Artifactory є підтримка LDAP, а Nexus - лише у платній версії. З іншого боку, безкоштовний плагін LDAP для Nexus доступний у коді Google.

Найповніше порівняння: http://binary-repositories-comppare.github.io/


Насправді Artifactory зараз GPL.
Брайан Фокс

5
У Nexus OSS тепер є підтримка Ldap для кількох версій.
Брайан Фокс

1
Штучна підтримка груп LDAP все ще є спеціальною функцією: jfrog.com/confluence/display/RTF/LDAP+Groups
Steven

1
Оновлення липня 2015 року: Codehaus вже мертвий, тому матриця перейшла до binary-repositories-comppare.github.io
JBaruch

7

Ви повинні використовувати Artifactory Його остання версія була справжнім стрибком. Ви можете створювати резервні копії своїх сховищ, а це означає, що ви можете зберігати всі ваші артефакти та підтримувати. Його є простий у користуванні веб-інтерфейс і його дуже просто налаштувати. вийшла нова версія 2.0


5

З точки зору учнів, я зазначу деякі специфічні відмінності між ними.

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

3

Якщо відсторонити політику / релігію, ліцензування має значення для деяких організацій.

Nexus тепер є GPL AGPLv3 і тепер публічна ліцензія Eclipse (EPL) .

Artifactory - це ліцензія Apache, що має ліцензію LGPLv3 версії 2.1 продукту.

Ви також можете розглянути Арчіва , лише для порівняння. Це ліцензія Apache 2.0.


5
Чому, це троль. Чи факт, що Linux є GPL, переконує організації від його використання? Існує різниця між включенням інструмента до програми та його використанням .
Тім О'Брайен

1
Я не хотів троліти, але я ціную вашу думку. Я вилучив з тексту суперлативи.
Зак Томпсон

4
@tobrien: FWIW, деякі організації (включаючи мою) дуже обережні, коли вони використовують програмне забезпечення GPL'ed, побоюючись юридичного впливу. Я не хочу обговорювати (відсутність) мудрості такої політики - підозрюю, що ми погодимось цілком. Просто зазначивши, що для деяких це має значення.
Зак Томпсон

1
Станом на 2.1, Artifactory так чи інакше є LGPL.
Брайан Фокс

1
@Zac @ user145026 Ви пов'язуєте свій код із бібліотеками Nexus ?? Якщо ні, то я не розумію, чому ця проблема є ліцензією GPL.
Паскаль Thivent

2

Я бачу, що використання Nexus зростає, тоді як використання штучного мистецтва взагалі залишається рівним.

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

Знімок зроблений звідси http://blog.sonatype.com/2014/11/42000-nexus-repository-managers-and-growing/

Існує також порівняння матриць http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix


3
1. Ця фотографія не є точною, оскільки вона покладається лише на дзвінки Maven Central. Є завантаження за межами Maven Central. 2. Кодхаус зараз мертвий, матриця перенесена на binary-repositories-comppare.github.io
JBaruch

Приємно. У вас є якась краща картина?
rofrol

Ви можете знайти деякі номери тут .
JBaruch

1
Нахилений до Nexus, Нахилений до jfrog - я б не довіряв жодному набору чисел.
Kyle Wiering

-2

І Artifactory, і Nexus мають більш-менш подібний набір функцій, але підтримка LDAP Artifactory робить його більш привабливим для Nexus. Хоча Nexus також має підтримку LDAP, але в платній версії :-(


1
Існує плагін LDAP з відкритим кодом для Nexus у коді google.
Брайан Фокс

3
Підтримка LDAP тепер у безкоштовній версії Nexus, оскільки 1.5.0
Девід Руссель

-2

Гммм ... мій досвід з артефактичним виглядом жахливий ... але я відносна новачка, тому сприймайте це з зерном солі. Моя загальна скарга на те, що файли jar, нещодавно завантажені в Artifactory, схоже, не індексуються одразу - як за години - і, здається, не існує хорошого способу змусити це. Я спробував різні речі, які виглядали так, ніби вони повинні були працювати, але не вдалося. Я працював з m2eclipse, додаючи залежності до проекту, який я перетворюю з мурахи. Коли я намагаюся додати баночку, яку я щойно додав до артефакторної, я очікую, що вона відобразиться як вибір у селекторі, але це не так.

колега сказав мені, що вони встановили Nexus і поки що їм це подобається ... але я ще не можу поручитися за це. Я збираюся встановити це на вікні Linux, як тільки ІТ може знайти мене.


3
Ви посилаєтесь на індекси Nexus, які завантажуються та споживаються IDE, у вашому випадку - плагіном m2eclipse. Ці індекси періодично завантажуються клієнтами і не повинні використовуватися при кожному розгортанні. Artifactory дозволяє намітити ці оновлення індексу або примусити їх. FYI, індекси, які використовуються в пошуку Artifactory (UI / REST), різні і оновлюються негайно та атомно, як частина розгортання нових артефактів. Такі інструменти, як IntelliJ, використовують це за допомогою запуску пошуку в сховищі, а не локально кешованому індексі, використовуючи API REST Artifactory.
Йоав Лендман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.