Czy powinniśmy używać Nexusa czy Artifactory do Maven Repo?

119

Używamy Mavena do dużego procesu kompilacji (> 100 modułów). Przechowywaliśmy nasze zależności zewnętrzne w kontroli źródła i używaliśmy ich do aktualizowania lokalnego repozytorium.

Jesteśmy jednak gotowi do przejścia do lokalnego repozytorium, które może buforować centralne, więc nie musimy proaktywnie pobierać wszystkich stron trzecich (ale nadal możemy mieć lokalne repozytorium, z którego można pobierać). Ponadto chcemy publikować nasze wewnętrzne artefakty kompilacji z nocnej kompilacji, aby programiści nie musieli budować świata.

Rozważamy Nexus i Artifactory. Jakie są powody preferowania jednego nad drugim? Czy są inne osoby, które powinniśmy rozważyć?

John Stauffer
źródło
2
Twój link nie jest zbyt obiektywny, oto odpowiedź z drugiej strony blogs.jfrog.org/2009/01/contrasting-artifactory-and-nexus.html
user58773
Myślę, że powinieneś rozważyć zwykły serwer http, taki jak Apache lub nginx. Są to „Boring Technology” ( mcfunley.com/choose-boring-technology ).
Johan Walles,
5
@JohanWalles: bardziej jak „Niewygodna i zmniejszająca produktywność technologia” w tym kontekście.
Priidu Neemre

Odpowiedzi:

74

Nie wiem o Artifactory, ale oto moje powody, dla których używam Nexusa:

  • Martwa prosta instalacja (a od 1.2 również martwa prosta aktualizacja)
  • Bardzo dobry interfejs sieciowy
  • Łatwy w utrzymaniu, prawie bez kosztów administracyjnych
  • Udostępnia kanały RSS dotyczące ostatnio zainstalowanych, uszkodzonych artefaktów i błędów
  • Może grupować kilka repozytoriów, dzięki czemu można dublować kilka źródeł, ale potrzebujesz tylko jednego lub dwóch wpisów w pliku settings.xml
  • Wdrażanie z Maven działa od razu po wyjęciu z pudełka (nie ma potrzeby hackowania WebDAV itp.).
  • jest wolne
  • Możesz przekierować ścieżki dostępu (np. Niektóre zepsute pom.xml wymagają "abc" z "xxx"). Zamiast łatać POM, możesz naprawić błąd w Nexusie i przekierować żądanie do miejsca, w którym naprawdę znajduje się artefakt.
Aaron Digulla
źródło
3
Nexus ma świetny internetowy interfejs użytkownika do tworzenia regularnie zaplanowanych zadań, które mogą usuwać SNAPSHOTS. Artifactory nie ma tego (jeszcze).
HDave
118

Jestem pewien, że jeśli mówisz tylko o przechowywaniu plików binarnych z " mvn deploy", oba będą w porządku.

Używamy Artifactory bardzo intensywnie ze wszystkimi ulepszeniami po drodze. Wiele projektów, liczne wdrożone migawki i zewnętrzne repozytoria przez proxy. Ani jednego problemu. Trudno mi wyjaśnić, w jaki sposób inni ludzie doświadczają problemów z jego bazą danych, indeksowaniem lub czymkolwiek innym. Nic takiego nam się nigdy nie przytrafiło. Ponadto Artifactory pozwala na przechowywanie danych na dysku i używa tylko bazy danych do przechowywania metadanych, jest dość elastyczny ( zobacz więcej tutaj ).

To, co bardzo różni te aplikacje, to podejście do integracji z innymi narzędziami i technologiami kompilacji. Nexus i Sonatype są właściwie zablokowane na Maven i m2eclipse. Ignorują wszystko inne i dopiero niedawno zaczęli pracować nad własną, zastrzeżoną integracją Hudson (zobacz ich webinar Maven 3 ). EDYCJA: To już nie jest prawdą, ponieważ od 2017 Nexus zapewnia znacznie większe wsparcie dla innych narzędzi do kompilacji Koniec edycji

Artifactory zapewnia niesamowitą integrację Hudson, TeamCity i Bamboo oraz obsługę Gradle / Ivy . Tak więc, podczas gdy Nexus nic ci nie daje, gdy wyjdziesz z „strefy komfortu” Sonatype (Maven, m2eclipse), Artifactory obejmuje wszystkie główne narzędzia do budowania i współpracuje z nimi.

W rzeczywistości możliwość wdrażania artefaktów kompilacji z Hudson po zakończeniu zadania, a nie przez „ mvn deploy”, jest ogromną różnicą: wtyczka Artifactory Hudson umożliwia atomowe wdrażanie wszystkich artefaktów naraz , tylko po pomyślnym zakończeniu pracy. „ mvn deploy” jest uruchamiany po każdym module i może wdrożyć częściowy zestaw artefaktów, jeśli zadanie kompilacji nie powiedzie się w środku. Wdrażanie z Mavena po zakończeniu modułu, a nie z serwera kompilacji po zakończeniu zadania, jest naprawdę złą rzeczą.

Jak widzisz, Artifactory myśli „poza pudełkiem”, podczas gdy Nexus myśli „wewnątrz pudełka” i dba tylko o artefakty Mavena i Mavena.

Coś jeszcze, co czyni Artifactory bardziej dostępnym, to oparte na chmurze rozwiązanie Artifactory Online . Za około 80 $ miesięcznie masz własną instancję Artifactory, nie musisz dedykować dla niej żadnego serwera.

Artifactory ma prosty i nieskomplikowany interfejs API REST , nie wiem, jak to działa na Nexusie. Edit Nexus ma również REST API , z którego możesz łatwo korzystać.

Podsumowując, do podstawowego przechowywania artefaktów Mavena uważam, że oba są w porządku. Ale podczas gdy Nexus przestaje istnieć jako „menedżer repozytorium Mavena”, Artifactory działa dalej i działa, będąc ogólnym „magazynem plików binarnych” dowolnego rodzaju, z dowolnego narzędzia do budowania i serwera CI.

Evgeny Goldin
źródło
9
Przepraszam, ale czuję tu FUD. Nexus z pewnością nie jest „zablokowany na Maven i m2eclipse”, doskonale integruje się z Jenkins, TeamCity i Bamboo. Posiada proste i nieskomplikowane API REST; każda funkcja Nexusa jest udostępniana jako punkt końcowy REST. Nie jest prawdą, że Nexus „dba tylko o artefakty Mavena i Mavena”; obsługuje również .Net (NuGet), Gradle / Ivy, OSGI i może obsługiwać repozytoria Yum RPM. Jeśli chodzi o przechowywanie artefaktów, pliki tar, zip, rar, par są uwzględnione wraz ze standardowymi typami archiwów Java.
RCross
25
Koleś, ta odpowiedź została wysłana 4 lata temu :) Już nie chodzi o Mavena? W takim razie dobrze!
Evgeny Goldin
3
@EvgenyGoldin Nie sprawia, że ​​jego komentarz jest mniej istotny (z wyjątkiem części FUD ^^).
OddDev
4
Teraz, gdy ten post ma siedem lat, a REST api są mniej lub bardziej obowiązkowe z narzędziami, Nexus nadal wydaje się być do niczego. Korzystanie z Nexus3 tam Reszta API to w zasadzie RPC; musisz przesłać mały skrypt, aby wykonać to, co chcesz zrobić. Z drugiej strony, Artifactory wydaje się udostępniać dobrze przemyślane API, które ma dobrą dokumentację.
thecoshman
27

Artifactory obsługuje oba plików systemowych i backends przechowywania bazy danych. Przechowywanie jest oparte na sumie kontrolnej, a identyczne pliki binarne są przechowywane tylko raz, bez względu na to, ile razy pojawiają się w repozytorium, co sprawia, że ​​Artifactory jest bardziej wydajny pod względem przechowywania. Przenoszenie i kopiowanie są również bardzo tanie ze względu na tę architekturę (w Nexusie nie ma REST do przenoszenia / kopiowania - musisz przenieść rzeczy w systemie plików, a następnie uruchomić działania naprawcze w repozytorium, aby powiadomić go o zmianie treści).

Innym ważnym wyróżnikiem jest unikalna integracja Artifactory z Hudson i TeamCity w celu przechwytywania informacji o wdrożonych artefaktach, rozwiązanych zależnościach i danych środowiskowych związanych z uruchomieniami kompilacji, co zapewnia pełną identyfikowalność kompilacji.

Yoav Landman
źródło
1
Artifactory obsługuje również trwałość S3.
Tim Ferrell
@TimFerrell, nie nieprawda, ale za cenę, która jest zaporowo droga dla większości sklepów, w których generalnie pracuję.
Sander Verhagen
21

Artifactory przechowuje artefakty w bazie danych, co oznacza, że ​​jeśli coś pójdzie nie tak, wszystkie artefakty znikną. Nexus używa płaskiego pliku do przechowywania cennych artefaktów, więc nie musisz się martwić, że wszystkie się zgubią.

Brian Fox
źródło
3
To właśnie miało dla nas znaczenie. Wyobrażam sobie, że to głównie paranoja, ale dobrze jest wiedzieć, że w każdej chwili łatwo będzie sprawdzić system.
Jeremy Huiskamp
4
Z tego powodu planujemy przejść z Artifactory na Nexus.
Kariem,
2
+1 od innej ofiary korupcji; Od tamtej pory używam Archivy i Nexusa i oba wydają się całkiem solidne.
SimonJ
73
Ta odpowiedź jest nieaktualna. Artifactory można teraz skonfigurować do przechowywania obiektów w systemie plików.
M. Dudley
37
Tak długo, jak korzystałem z Artifactory, miał on obsługę systemu plików dla rzeczywistych artefaktów. Ale i tak używam bazy danych, ponieważ nasz główny serwer bazy danych jest replikowany i zarchiwizowany. Nie rozumiem, w jaki sposób pamięć systemu plików jest z natury bezpieczniejsza niż baza danych. Nie ma nic przeciwko Nexusowi, po prostu próbuję to wyjaśnić.
Joshua Davis
9

Jeśli potrzebujesz funkcji „Pro” któregokolwiek z nich (np. Repozytorium przejściowe, promocja artefaktów, NuGet), musisz wziąć pod uwagę różne modele cenowe, które są wyświetlane na ich stronach internetowych.

W podsumowaniu:

  • Artifactory Pro
    • płacisz za serwer
    • możesz zapłacić więcej za wydłużone godziny pracy
  • Nexus Pro
    • płacisz za stanowisko , tj. ilu programistów pobiera artefakty
    • Usługa wsparcia jest dostępna od poniedziałku do piątku w godzinach 0800-2000 ET, bez względu na cenę

Bez względu na to, ilu masz użytkowników, Nexus Pro oferuje usługę pomocy technicznej, która jest zasadniczo odpowiednikiem „Silver Value Pack” Artifactory o wartości 7450 USD rocznie.

Za 7450 USD rocznie otrzymasz około 67 miejsc na Nexus Pro (1-50 za 108 USD, reszta za 120 USD).

Jeśli chodzi o samą cenę i wsparcie, Nexus Pro ma sens, dopóki nie dotrzesz do 67 użytkowników, w którym to momencie Artifactory staje się tańszą opcją.

Jeśli całe wsparcie wykonujesz na miejscu; jednak ten magiczny punkt dotyczy około 23 użytkowników (najbardziej podstawowa oferta wsparcia Artifactory to 2750 USD rocznie).

RCross
źródło
8

Niedawno przeprowadziłem badania dotyczące Artifactory 2 i Nexusa 1.3. Wymienię tutaj główne różnice, które znalazłem:

  • Artifactory przechowuje metadane i opcjonalnie pliki w DB, Nexus zapisuje bezpośrednio do systemu plików. Są plusy. i wady. dla każdego podejścia. DB obsługuje transakcje, podczas gdy w FS można uzyskać bezpośredni dostęp do plików.
  • Artifactory ma wyższe wymagania systemowe, zwłaszcza jeśli chodzi o miejsce na dysku.
  • Artifactory obsługuje LDAP, podczas gdy Nexus ma ją tylko w wersji płatnej. Z drugiej strony bezpłatna wtyczka LDAP do Nexusa jest dostępna w kodzie Google.

Najbardziej kompletne porównanie: http://binary-repositories-comparison.github.io/

Siergiej
źródło
Właściwie Artifactory jest teraz na licencji GPL.
Brian Fox
5
Nexus OSS obsługuje teraz Ldap w kilku wersjach.
Brian Fox
1
Artifactory wsparcie dla grup LDAP jest nadal profesjonalną funkcją: jfrog.com/confluence/display/RTF/LDAP+Groups
Steven Magana-Zook
1
Aktualizacja lipiec 2015: Codehaus już nie żyje, więc macierz została przeniesiona do binary-repositories-comparison.github.io
JBaruch
7

Powinieneś użyć Artifactory Jego najnowsza wersja była prawdziwym skokiem Możesz tworzyć przyrostowe kopie zapasowe swoich repozytoriów, co oznacza, że ​​możesz zapisywać i konserwować wszystkie swoje artefakty Ma łatwy w użyciu internetowy interfejs użytkownika i jest naprawdę łatwy w konfiguracji Bardzo mi się podobało sprawdź z nową wersją 2.0


źródło
5

Z punktu widzenia uczących się zauważam pewne szczególne różnice między nimi.

  1. Wdrażanie Sonatype .war nie jest obecnie obsługiwane na serwerze aplikacji Jboss, chociaż działa pod kontrolą Tomcat.
  2. Sonatype nie oferuje obecnie Amazon Machine Image (AMI), który mógłbym szybko wstać i przetestować.
  3. Artifactory AMI jest dostarczany przez Bitnami i zajmuje tylko kilka minut, aby wstać i kilka minut więcej, aby skonfigurować, może kilkadziesiąt minut w zależności od tego, co próbujesz osiągnąć.
  4. Artifactory oferuje wersję SaaS Artifactory w chmurze, dzięki czemu możesz skupić się na wykonywaniu zadań, a nie na infrastrukturze.
  5. Nie mam doświadczenia z Nexusem, ale uważam, że Artifactory jest bardzo intuicyjny i łatwy w konfiguracji, przynajmniej na początku.
  6. Dodano - zauważam, że Podręcznik użytkownika Artifactory, który może być w porządku dla doświadczonego profesjonalisty, jest nieco lekki, jeśli chodzi o szczegółowe wyjaśnienia. Na przykład na początku rozpakowuje się, a następnie dodaje repozytorium, powiedzmy Jboss EAP Enterprise Repo firmy RedHat. Wszystko idzie dobrze, ale kiedy próbowałem wyświetlić artefakty, które zostały zaimportowane, Artifactory zgłasza zero artefaktów? Brak błędów ani ostrzeżeń, więc teraz szukam wyjaśnienia. Czy to normalne, czy nie? Proste wyjaśnienie w doco może szybko wskazać właściwy kierunek. Będąc dobrym współpracownikiem, dodaję te komentarze do projektu z korzyścią dla innych początkujących.
user3175893
źródło
3

Odkładając na bok całą politykę / religię, licencje mają znaczenie dla niektórych organizacji.

Nexus to GPL, teraz AGPLv3, a teraz Eclipse Public License (EPL) .

Artifactory posiada licencję Apache LGPLv3 od wersji 2.1 produktu.

Możesz także rozważyć Archivę , dla porównania. Jest na licencji Apache 2.0.

Zac Thompson
źródło
5
To jest troll. Czy fakt, że Linux jest objęty GPL, zniechęca organizacje do korzystania z niego? Istnieje różnica między włączaniem narzędzia do programu a używaniem go.
Tim O'Brien
1
Nie chciałem trollować, ale doceniam twój punkt widzenia. Usunąłem superlatywy z tekstu.
Zac Thompson,
4
@tobrien: FWIW, niektóre organizacje (w tym moja) są bardzo ostrożne, gdy używają oprogramowania na GPL, obawiając się ujawnienia praw. Nie chcę omawiać (braku) mądrości takiej polityki - podejrzewam, że całkowicie byśmy się zgodzili. Zwracam tylko uwagę, że dla niektórych ma to znaczenie.
Zac Thompson,
1
Od wersji 2.1 Artifactory i tak jest na licencji LGPL.
Brian Fox
1
@Zac @ user145026 Czy łączysz swój kod z bibliotekami Nexusa? Jeśli nie, nie rozumiem, dlaczego licencja GPL jest problemem.
Pascal Thivent,
2

Widzę, że wykorzystanie Nexusa rośnie, podczas gdy użycie Artifcatory generalnie pozostaje płaskie.

wprowadź opis obrazu tutaj

Zdjęcie pochodzi z http://blog.sonatype.com/2014/11/42000-nexus-repository-managers-and-growing/

Istnieje również porównanie macierzy http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix

rofrol
źródło
3
1. Ten obraz nie jest dokładny, ponieważ opiera się tylko na połączeniach Maven Central. Istnieją pliki do pobrania poza Maven Central. 2. Codehaus już nie żyje, macierz przeniesiona do binary-repositories-comparison.github.io
JBaruch
Miły. Czy masz lepszy obraz?
rofrol
Możesz znaleźć kilka liczb tutaj .
JBaruch
1
Zwrotny w stronę Nexusa, nastawiony na jfrog - nie ufałbym żadnemu z zestawów liczb.
Kyle Wiering
-2

Zarówno Artifactory, jak i Nexus mają mniej więcej podobny zestaw funkcji, ale obsługa LDAP Artifactory sprawia, że ​​jest bardziej atrakcyjny niż Nexus. Chociaż Nexus również obsługuje LDAP, ale w wersji płatnej :-(

Vinod Singh
źródło
1
W Google Code jest dostępna wtyczka LDAP typu open source dla Nexusa.
Brian Fox
3
Obsługa LDAP jest teraz dostępna w bezpłatnej wersji Nexusa od 1.5.0
David Roussel
-2

Hmmm ... moje doświadczenie z artefakturą jest okropne ... ale jestem względnie nowicjuszem, więc traktuj to z przymrużeniem oka. Moja ogólna skarga jest taka, że ​​pliki jar ostatnio przesłane do Artifactory nie wydają się być indeksowane od razu - tak jak przez wiele godzin - i nie wydaje się, aby był dobry sposób, aby to wymusić. Próbowałem różnych rzeczy, które wydawały się działać, ale nie działały. Pracowałem z m2eclipse, dodając zależności do projektu, który konwertuję z ant. Kiedy próbuję dodać słoik, który właśnie dodałem do artefaktora, spodziewam się, że pojawi się jako opcja w selektorze, ale tak się nie dzieje.

współpracownik powiedział mi, że zainstalował Nexusa i jak dotąd im się podoba ... ale nie mogę jeszcze za to ręczyć. Mam zamiar zainstalować to na Linuksie, gdy tylko dział IT będzie w stanie go znaleźć.

user494078
źródło
3
Masz na myśli indeksy Nexusa, które są pobierane i używane przez IDE, w twoim przypadku - przez wtyczkę m2eclipse. Te indeksy są okresowo pobierane do klientów i nie są przeznaczone do wykorzystania przy każdym wdrożeniu. Artifactory pozwala zaplanować te aktualizacje indeksu lub wymusić to. FYI, indeksy używane przez wyszukiwanie Artifactory (UI / REST) ​​są różne i są aktualizowane natychmiastowo i niepodzielnie w ramach wdrażania nowych artefaktów. Narzędzia takie jak IntelliJ wykorzystują to, uruchamiając wyszukiwania w repozytorium, a nie w indeksie przechowywanym lokalnie, przy użyciu interfejsu API REST Artifactory.
Yoav Landman