Dovremmo usare Nexus o Artifactory per un Maven Repo?


119

Stiamo usando Maven per un processo di compilazione di grandi dimensioni (> 100 moduli). Abbiamo archiviato le nostre dipendenze esterne nel controllo del codice sorgente e lo abbiamo utilizzato per aggiornare un repository locale.

Tuttavia, siamo pronti per passare a un repository locale che può memorizzare nella cache centrale in modo da non dover scaricare in modo proattivo tutte le terze parti (ma possiamo ancora avere un repository locale da cui estrarre). Inoltre, vogliamo pubblicare i nostri artefatti di build interni da una build notturna in modo che gli sviluppatori non debbano costruire il mondo.

Stiamo considerando Nexus e Artifactory. Quali sono i motivi per preferire l'uno sull'altro? Ce ne sono altri che dovremmo considerare?


2
Il tuo link non è troppo obiettivo, ecco l'altra risposta laterale blogs.jfrog.org/2009/01/contrasting-artifactory-and-nexus.html
user58773

Penso che dovresti considerare un semplice server http come Apache o nginx. Sono "Tecnologia noiosa" ( mcfunley.com/choose-boring-technology ).
Johan Walles

5
@ JohanWalles: più simile a "Tecnologia scomoda e che riduce la produttività" in questo contesto.
Priidu Neemre

Risposte:


74

Non so di Artifactory, ma ecco i motivi per cui utilizzo Nexus:

  • Dead simple install (e dalla 1.2, anche dead simple upgrade)
  • Interfaccia utente web molto buona
  • Facile da mantenere, quasi nessun sovraccarico amministrativo
  • Fornisce feed RSS di artefatti ed errori danneggiati e installati di recente
  • Può raggruppare diversi repository in modo da poter eseguire il mirroring di diverse fonti ma richiede solo una o due voci nel tuo settings.xml
  • La distribuzione da Maven funziona immediatamente (non sono necessari hack WebDAV, ecc.).
  • è gratis
  • Puoi reindirizzare i percorsi di accesso (ad esempio, alcuni pom.xml non funzionanti richiedono "abc" da "xxx"). Invece di patchare il POM, puoi correggere il bug in Nexus e reindirizzare la richiesta al punto in cui si trova effettivamente l'artefatto.

3
Nexus ha un'ottima interfaccia utente web per la creazione di lavori pianificati regolarmente che possono eliminare gli ISTANTANEE. Artifactory non ha (ancora) questo.
HDave

118

Sono sicuro che se parli solo di memorizzare binari da " mvn deploy" andranno bene entrambi.

Usiamo Artifactory molto ampiamente con tutti gli aggiornamenti lungo il percorso. Molti progetti, numerose istantanee distribuite e repository esterni proxy. Non un solo problema. Trovo difficile spiegare come altre persone riscontrano problemi con il suo DB, indicizzazione o qualsiasi altra cosa. Non ci è mai successo niente del genere. Inoltre, Artifactory consente di memorizzare i dati su un disco e utilizzare solo un DB per la memorizzazione dei metadati, è abbastanza flessibile ( vedi di più qui ).

Ciò che rende queste applicazioni molto diverse è il loro approccio all'integrazione con altri strumenti e tecnologie di build. Nexus e Sonatype sono praticamente bloccati su Maven e m2eclipse. Ignorano qualsiasi altra cosa e solo di recente hanno iniziato a lavorare sulla propria integrazione proprietaria Hudson (vedere il loro webinar Maven 3 ). EDIT: Questo non è più vero dal 2017 Nexus offre un supporto molto più ampio per altri strumenti di compilazione Fine modifica

Artifactory fornisce una straordinaria integrazione con Hudson, TeamCity e Bamboo e supporto per Gradle / Ivy . Quindi, anche se Nexus non ti dà nulla una volta che esci dalla "comfort zone" di Sonatype (Maven, m2eclipse), Artifactory abbraccia e collabora con tutti i principali strumenti di costruzione.

In effetti, essere in grado di distribuire artefatti di build da Hudson, quando il lavoro è terminato, e non da " mvn deploy" è un'enorme differenza: il plug-in Artifactory Hudson esegue una distribuzione in modo atomico di tutti gli artefatti contemporaneamente , solo quando un lavoro di compilazione è terminato con successo. " mvn deploy" viene eseguito dopo ogni modulo e può distribuire un set parziale di artefatti se un lavoro di compilazione fallisce nel mezzo. La distribuzione da Maven al completamento del modulo e non da un server di compilazione al completamento del lavoro è davvero una brutta cosa da fare.

Come vedi, Artifactory pensa "fuori dagli schemi" mentre Nexus pensa "dentro gli schemi" e si preoccupa solo degli artefatti di Maven e Maven.

Un'altra cosa che rende Artifactory più accessibile è la loro soluzione Artifactory Online basata su cloud . Per circa $ 80 al mese hai la tua istanza Artifactory, non è necessario dedicare alcun server per essa.

Artifactory ha un'API REST semplice e diretta , non so come funziona per Nexus. Edit Nexus ha anche un'API REST che puoi usare facilmente.

Per riassumere, per l'archiviazione di base degli artefatti Maven penso che vadano bene entrambi. Ma mentre Nexus smette di essere strettamente un "gestore di repository Maven", Artifactory va avanti all'infinito, essendo un "archivio binari" generale per binari di qualsiasi tipo, da qualsiasi strumento di compilazione e server CI.


9
Mi dispiace ma sento odore di FUD qui. Nexus non è certamente "bloccato su Maven e m2eclipse", si integra perfettamente con Jenkins, TeamCity e Bamboo. Ha un'API REST semplice e diretta; ogni funzionalità Nexus viene esposta come endpoint REST. Non è vero dire che Nexus "si preoccupa solo degli artefatti Maven e Maven"; supporta anche .Net (NuGet), Gradle / Ivy, OSGI e può ospitare repository Yum RPM. In termini di archiviazione degli artefatti, tar, zip, rar, par sono inclusi insieme ai tipi di archivio Java standard.
RCross

25
Amico, quella risposta è stata pubblicata 4 anni fa :) Non si tratta più di Maven? Bene allora!
Evgeny Goldin

3
@EvgenyGoldin Non rende il suo commento meno rilevante (ad eccezione della parte FUD ^^).
OddDev

4
Ora che questo post ha sette anni e le API REST sono più o meno obbligatorie con gli strumenti, Nexus sembra ancora fare schifo. Utilizzando Nexus3 l'API rest è fondamentalmente rpc; devi caricare un piccolo script per eseguire quello che vuoi fare. Artifactory d'altra parte sembra esporre un'API ben congegnata che ha una buona documentazione.
thecoshman

27

Artifactory supporta sia il file system che i backend di archiviazione del database. Lo storage è basato su checksum e file binari identici vengono archiviati solo una volta, indipendentemente dal numero di volte che compaiono nel repository, il che rende Artifactory più efficiente dal punto di vista dello storage. Anche lo spostamento e la copia sono molto economici a causa di questa architettura (in Nexus non c'è REST per lo spostamento / copia: devi spostare le cose sul file system, quindi eseguire azioni correttive sul repository per far sapere che il contenuto è cambiato).

Un altro importante elemento di differenziazione è che Artifactory ha un'integrazione unica con Hudson e TeamCity per acquisire informazioni su artefatti distribuiti, dipendenze risolte e dati ambientali associati alle esecuzioni di build, che fornisce la tracciabilità completa della build.


1
Artifactory supporta anche la persistenza S3.
Tim Ferrell

@TimFerrell, non falso, ma a un prezzo proibitivo per la maggior parte dei negozi in cui generalmente lavoro.
Sander Verhagen

21

Artifactory memorizza gli artefatti in un database, il che significa che se qualcosa va storto, tutti i tuoi artefatti sono spariti. Nexus utilizza un file flat per i tuoi preziosi artefatti, quindi non devi preoccuparti che si perdano tutti.


3
Questo è ciò che ha fatto la differenza anche per noi. Immagino sia per lo più solo paranoia, ma è confortante sapere che sarà facile ispezionare il sistema in qualsiasi momento.
Jeremy Huiskamp

4
Abbiamo in programma di passare da Artifactory a Nexus per questo motivo.
Kariem

2
+1 da un'altra vittima di corruzione; Da allora ho usato Archiva e Nexus ed entrambi sembrano piuttosto solidi.
SimonJ

73
Questa risposta è obsoleta. Artifactory ora può essere configurato per memorizzare oggetti sul file system.
M. Dudley

37
Finché ho usato Artifactory, ha avuto il supporto del file system per gli artefatti reali. Ma utilizzo comunque un database perché il nostro server database principale viene replicato e sottoposto a backup. Non vedo come l'archiviazione del filesystem sia intrinsecamente più sicura di un database. Niente contro Nexus, sto solo cercando di chiarire questo.
Joshua Davis

9

Se sono necessarie le funzionalità "Pro" di entrambi (ad esempio, repository di gestione temporanea, promozione di artefatti, NuGet), è necessario considerare i diversi modelli di prezzo, che vengono visualizzati sui rispettivi siti Web.

In sintesi:

  • Artifactory Pro
    • paghi per server
    • puoi pagare di più per aumentare le ore di servizio
  • Nexus Pro
    • si paga per postazione , ovvero quanti sviluppatori scaricano artefatti
    • il servizio di supporto è lun-ven 0800-2000 ET, indipendentemente da quello che paghi

Indipendentemente dal numero di utenti, Nexus Pro offre un servizio di assistenza sostanzialmente equivalente al "Silver Value Pack" di Artifactory da $ 7.450 / anno.

$ 7.450 all'anno ti faranno acquistare circa 67 postazioni Nexus Pro (1-50 a $ 108, il resto a $ 120).

Solo sul prezzo e sul supporto, quindi, Nexus Pro ha senso fino a quando non si arriva a 67 utenti, a quel punto Artifactory diventa l'opzione più economica.

Se stai facendo tutto il supporto internamente; tuttavia, quel punto magico è di circa 23 utenti (l'offerta di supporto più elementare di Artifactory è di $ 2,750 / anno).


8

Recentemente ho fatto delle ricerche su Artifactory 2 e Nexus 1.3. Elencherò qui le principali differenze che ho riscontrato:

  • Artifactory memorizza i metadati e, facoltativamente, i file nel database, Nexus scrive direttamente nel file system. Ci sono dei professionisti. e contro. per ogni approccio. DB supporta le transazioni, mentre in FS è possibile accedere direttamente ai file memorizzati.
  • Artifactory ha requisiti di sistema più elevati soprattutto per lo spazio su disco.
  • Artifactory ha il supporto LDAP, mentre Nexus lo ha solo nella versione a pagamento. D'altra parte il plug-in LDAP gratuito per Nexus è disponibile su Google Code.

Il confronto più completo: http://binary-repository-comparison.github.io/


Attualmente Artifactory è ora GPL.
Brian Fox

5
Nexus OSS ha il supporto Ldap per diverse versioni ora.
Brian Fox

1
Il supporto di Artifactory per i gruppi LDAP è ancora una funzionalità professionale: jfrog.com/confluence/display/RTF/LDAP+Groups
Steven Magana-Zook

1
Aggiornamento luglio 2015: Codehaus è morto ora, quindi la matrice è migrata a binary-repositories-comparison.github.io
JBaruch

7

Dovresti usare Artifactory La sua ultima versione è stata un vero salto Puoi eseguire il backup incrementale dei tuoi repository, il che significa che puoi salvare e mantenere tutti i tuoi artefatti Ha un'interfaccia utente web facile da usare ed è davvero facile da configurare mi è piaciuto molto controllare la sua nuova versione 2.0


5

Dal punto di vista degli studenti, noto alcune differenze specifiche tra i due.

  1. La distribuzione di Sonatype .war non è supportata al momento sul server delle applicazioni Jboss, sebbene venga eseguita con Tomcat.
  2. Al momento Sonatype non mi offre un'Amazon Machine Image (AMI) che potrei rapidamente alzare e testare.
  3. Un'AMI Artifactory è fornita da Bitnami e richiede solo pochi minuti per alzarsi e qualche minuto in più per la configurazione, forse diverse decine di minuti a seconda di ciò che stai cercando di ottenere.
  4. Artifactory offre una versione SaaS di Artifactory nel cloud in modo che tu possa concentrarti sul fare le cose piuttosto che sull'infrastruttura.
  5. Non ho esperienza con Nexus ma ho trovato Artifactory molto intuitivo e facile da configurare, almeno inizialmente.
  6. Aggiunto - Faccio notare che la Guida per l'utente di Artifactory, che potrebbe essere OK per un professionista esperto, è un po 'leggera per alcune spiegazioni approfondite. Ad esempio, all'inizio, si decomprime e quindi si aggiunge un repository, ad esempio Jboss EAP Enterprise Repo di RedHat. Va tutto bene ma poi quando ho provato a visualizzare gli artefatti importati Artifactory segnala zero artefatti? Nessun errore o avviso, quindi sto cercando una spiegazione. È normale o non normale? Una semplice spiegazione nel doco può puntare rapidamente nella giusta direzione. Essendo un buon collaboratore, aggiungo questi commenti al progetto a beneficio di altri principianti.

3

Tutta la politica / religione a parte, le licenze fanno la differenza per alcune organizzazioni.

Nexus è GPL ora AGPLv3 e ora Eclipse Public License (EPL) .

Artifactory è dotato di licenza LGPLv3 con licenza Apache a partire dalla versione 2.1 del prodotto.

Potresti anche prendere in considerazione Archiva , solo per fare un confronto. È concesso in licenza Apache 2.0.


5
Perché, questo è un troll. Il fatto che Linux sia GPL dissuade le organizzazioni dall'usarlo? C'è una differenza tra incorporare uno strumento in un programma e usarlo .
Tim O'Brien

1
Non volevo troll, ma apprezzo il tuo punto. Ho rimosso i superlativi dal testo.
Zac Thompson

4
@tobrien: FWIW, alcune organizzazioni (compresa la mia) sono molto caute quando usano software GPL, temendo l'esposizione legale. Non voglio discutere la (mancanza di) saggezza di tale politica - sospetto che saremmo completamente d'accordo. Faccio solo notare che per alcuni è importante.
Zac Thompson

1
A partire dalla versione 2.1, Artifactory è comunque LGPL.
Brian Fox

1
@Zac @ user145026 Stai collegando il tuo codice alle librerie Nexus ?? In caso contrario, non vedo perché la licenza GPL sia un problema.
Pascal Thivent

2

Vedo che l'utilizzo di Nexus sta crescendo, mentre l'utilizzo di Artifcatory rimane generalmente piatto.

inserisci qui la descrizione dell'immagine

L'immagine è presa da qui http://blog.sonatype.com/2014/11/42000-nexus-repository-managers-and-growing/

C'è anche il confronto tra matrici http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix


3
1. Questa immagine non è accurata, poiché si basa solo sulle chiamate Maven Central. Sono disponibili download oltre Maven Central. 2. Codehaus è morto ora, matrice migrata a binary-repositories-comparison.github.io
JBaruch

Bello. Hai un'immagine migliore?
rofrol

Puoi trovare alcuni numeri qui .
JBaruch

1
Preoccupato per Nexus, Preoccupato per jfrog: non mi fiderei di nessuno dei due numeri.
Kyle Wiering

-2

Sia Artifactory che Nexus hanno un set di funzionalità più o meno simile, ma il supporto LDAP di Artifactory lo rende più attraente rispetto a Nexus. Sebbene Nexus abbia anche il supporto LDAP ma nella versione a pagamento :-(


1
C'è un plugin LDAP open source per Nexus sul codice Google.
Brian Fox

3
Il supporto LDAP è ora nella versione gratuita di Nexus, dalla 1.5.0
David Roussel

-2

Hmmm ... la mia esperienza con artifactory è orribile ... ma sono un principiante relativo quindi prendila con le pinze. La mia lamentela generale è che i file jar caricati di recente su Artifactory non sembrano essere indicizzati immediatamente - come per ore - e non sembra esserci un buon modo per forzarli. Ho provato varie cose che sembravano avrebbero dovuto funzionare, ma non lo hanno fatto. Ho lavorato con m2eclipse, aggiungendo dipendenze a un progetto che sto convertendo da ant. Quando provo ad aggiungere un vaso che ho appena aggiunto ad artifactory, mi aspetto che venga visualizzato come una scelta nel selettore, ma non lo è.

un collega mi ha detto che avevano installato nexus e finora gli piace ... ma non posso ancora garantirlo. Sto per installarlo su una macchina Linux non appena l'IT riesce a trovarmene uno.


3
Ti riferisci agli indici Nexus che vengono scaricati e consumati dagli IDE, nel tuo caso, dal plug-in m2eclipse. Questi indici vengono scaricati periodicamente sui client e non devono essere utilizzati a ogni distribuzione. Artifactory ti consente di pianificare questi aggiornamenti dell'indice o di forzarli. Cordiali saluti, gli indici utilizzati dalle ricerche Artifactory (UI / REST) ​​sono diversi e vengono aggiornati immediatamente e in modo atomico come parte della distribuzione di nuovi artefatti. Strumenti come IntelliJ ne fanno uso eseguendo ricerche nel repository piuttosto che in un indice memorizzato nella cache locale, utilizzando l'API REST di Artifactory.
Yoav Landman
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.