Sollten wir Nexus oder Artifactory für ein Maven Repo verwenden?

119

Wir verwenden Maven für einen großen Build-Prozess (> 100 Module). Wir haben unsere externen Abhängigkeiten in der Quellcodeverwaltung gespeichert und damit ein lokales Repo aktualisiert.

Wir sind jedoch bereit, zu einem lokalen Repo überzugehen, das zentral zwischengespeichert werden kann, damit wir nicht alle Drittanbieter proaktiv herunterladen müssen (aber wir können immer noch ein lokales Repo zum Abrufen haben). Darüber hinaus möchten wir unsere internen Build-Artefakte aus einem nächtlichen Build veröffentlichen, damit Entwickler nicht die Welt erstellen müssen.

Wir betrachten Nexus und Artifactory. Was sind die Gründe, einen dem anderen vorzuziehen? Gibt es andere, über die wir nachdenken sollten?

John Stauffer
quelle
2
Ihr Link ist nicht zu objektiv, hier ist die andere Seite Antwort blogs.jfrog.org/2009/01/contrasting-artifactory-and-nexus.html
user58773
Ich denke, Sie sollten einen einfachen http-Server wie Apache oder Nginx in Betracht ziehen. Sie sind "Boring Technology" ( mcfunley.com/choose-boring-technology ).
Johan Walles
5
@JohanWalles: in diesem Zusammenhang eher wie "Unbequeme und produktivitätsreduzierende Technologie".
Priidu Neemre

Antworten:

74

Ich weiß nichts über Artifactory, aber hier sind meine Gründe für die Verwendung von Nexus:

  • Tot einfache Installation (und seit 1.2 auch tot einfaches Upgrade)
  • Sehr gute Web-Benutzeroberfläche
  • Einfach zu warten, fast kein Verwaltungsaufwand
  • Bietet Ihnen RSS-Feeds mit kürzlich installierten, beschädigten Artefakten und Fehlern
  • Es kann mehrere Repositorys gruppieren, sodass Sie mehrere Quellen spiegeln können, aber nur ein oder zwei Einträge in Ihrer settings.xml benötigen
  • Die Bereitstellung über Maven funktioniert sofort (keine WebDAV-Hacks usw. erforderlich).
  • es ist kostenlos
  • Sie können Zugriffspfade umleiten (dh für einige fehlerhafte pom.xml ist "abc" von "xxx" erforderlich). Anstatt das POM zu patchen, können Sie den Fehler in Nexus beheben und die Anforderung an die Stelle umleiten, an der sich das Artefakt tatsächlich befindet.
Aaron Digulla
quelle
3
Nexus verfügt über eine hervorragende Web-Benutzeroberfläche zum Erstellen regelmäßig geplanter Jobs, mit denen SNAPSHOTS gelöscht werden können. Artifactory hat dies (noch) nicht.
HDave
118

Ich bin sicher, wenn Sie nur über das Speichern von Binärdateien von " mvn deploy" sprechen, werden beide gut funktionieren.

Wir verwenden Artifactory sehr ausgiebig bei allen Upgrades auf dem Weg. Viele Projekte, zahlreiche bereitgestellte Snapshots und externe Repos als Proxy. Kein einziges Problem. Es fällt mir schwer zu erklären, wie andere Leute Probleme mit der Datenbank, der Indizierung oder irgendetwas anderem haben. So etwas ist uns noch nie passiert. Artifactory ermöglicht es auch, Daten auf einer Festplatte zu speichern und nur eine Datenbank zum Speichern von Metadaten zu verwenden. Es ist recht flexibel ( siehe mehr hier ).

Was diese Anwendungen sehr unterscheidet, ist ihr Ansatz zur Integration mit anderen Build-Tools und -Technologien. Nexus und Sonatype sind für Maven und m2eclipse ziemlich gesperrt. Sie ignorieren alles andere und haben erst vor kurzem begonnen, an ihrer eigenen Hudson-Integration zu arbeiten (siehe ihr Maven 3-Webinar ). BEARBEITEN: Dies gilt ab 2017 nicht mehr. Nexus bietet eine viel größere Unterstützung für andere Build-Tools. Ende der Bearbeitung

Artifactory bietet eine großartige Integration von Hudson, TeamCity und Bamboo sowie Gradle / Ivy- Unterstützung. Während Nexus Ihnen nichts bietet, wenn Sie die "Komfortzone" von Sonatype (Maven, m2eclipse) verlassen, umfasst Artifactory alle wichtigen Build-Tools und arbeitet mit ihnen zusammen.

Tatsächlich ist die Bereitstellung von Build-Artefakten von Hudson nach Abschluss des Jobs und nicht von " mvn deploy" ein großer Unterschied: Das Artifactory Hudson-Plugin führt eine atomähnliche Bereitstellung aller Artefakte auf einmal durch , nur wenn ein Build-Job erfolgreich abgeschlossen wurde. " mvn deploy" wird nach jedem Modul ausgeführt und kann einen Teilsatz von Artefakten bereitstellen, wenn ein Build-Job in der Mitte fehlschlägt. Die Bereitstellung von Maven nach Abschluss des Moduls und nicht von einem Build-Server nach Abschluss des Jobs ist wirklich eine schlechte Sache.

Wie Sie sehen, denkt Artifactory "außerhalb der Box", während Nexus "innerhalb der Box" denkt und sich nur um Maven- und Maven-Artefakte kümmert.

Etwas anderes, das Artifactory zugänglicher macht, ist die Cloud-basierte Artifactory Online-Lösung . Für etwa 80 US-Dollar pro Monat haben Sie eine eigene Artifactory-Instanz, für die Sie keinen Server reservieren müssen.

Artifactory hat eine einfache und unkomplizierte REST-API , weiß nicht, wie es für Nexus funktioniert. Edit Nexus verfügt auch über eine REST-API , die Sie ebenfalls problemlos verwenden können.

Zusammenfassend denke ich, dass für die grundlegende Speicherung von Maven-Artefakten beide in Ordnung sind. Aber während Nexus aufhört, ausschließlich einen "Maven-Repository-Manager" zu haben, geht Artifactory immer weiter und ist ein allgemeiner "Binärspeicher" für Binärdateien jeglicher Art, von jedem Build-Tool und CI-Server.

Evgeny Goldin
quelle
9
Es tut mir leid, aber ich rieche hier FUD. Nexus ist sicherlich nicht "auf Maven und m2eclipse festgelegt", sondern lässt sich perfekt in Jenkins, TeamCity und Bamboo integrieren. Es verfügt über eine einfache und unkomplizierte REST-API. Jedes Nexus-Feature wird als REST-Endpunkt verfügbar gemacht. Es ist nicht wahr zu sagen, dass Nexus "sich nur um Maven und Maven Artefakte kümmert"; Es unterstützt auch .Net (NuGet), Gradle / Ivy, OSGI und kann Yum RPM-Repositorys hosten. In Bezug auf die Speicherung von Artefakten sind tar, zip, rar, par zusammen mit den Standard-Java-Archivtypen enthalten.
RCross
25
Alter, diese Antwort wurde vor 4 Jahren gepostet :) Es geht nicht mehr um Maven? Gut dafür dann!
Evgeny Goldin
3
@EvgenyGoldin Macht seinen Kommentar nicht weniger relevant (außer dem FUD-Teil ^^).
OddDev
4
Jetzt, da dieser Beitrag sieben Jahre alt ist und REST-Apis mit Tools mehr oder weniger obligatorisch sind, scheint Nexus immer noch daran zu scheißen. Bei Verwendung von Nexus3 ist die Rest-API im Grunde rpc. Sie müssen ein kleines Skript hochladen, um das auszuführen, was Sie tun möchten. Artifactory hingegen scheint eine gut durchdachte API mit guter Dokumentation bereitzustellen.
Thecoshman
27

Artifactory unterstützt sowohl Dateisystem- als auch Datenbankspeicher-Backends. Die Speicherung basiert auf Prüfsummen und identische Binärdateien werden nur einmal gespeichert, unabhängig davon, wie oft sie im Repo angezeigt werden. Dies macht Artifactory in Bezug auf die Speicherung effizienter. Verschieben und Kopieren sind aufgrund dieser Architektur auch sehr billig (in Nexus gibt es keinen REST für Verschieben / Kopieren - Sie müssen Inhalte im Dateisystem verschieben und dann Korrekturmaßnahmen für das Repo ausführen, um zu erfahren, dass sich der Inhalt geändert hat).

Ein weiteres wichtiges Unterscheidungsmerkmal ist die einzigartige Integration von Artifactory in Hudson und TeamCity zur Erfassung von Informationen über bereitgestellte Artefakte, aufgelöste Abhängigkeiten und Umgebungsdaten im Zusammenhang mit Build-Läufen, wodurch eine vollständige Rückverfolgbarkeit der Builds gewährleistet wird.

Yoav Landman
quelle
1
Artifactory unterstützt auch die S3-Persistenz.
Tim Ferrell
@ TimFerrell, nicht falsch, aber zu einem Preis, der für die meisten Geschäfte, in denen ich normalerweise arbeite, unerschwinglich teuer ist.
Sander Verhagen
21

Artifactory speichert die Artefakte in einer Datenbank. Wenn also etwas schief geht, sind alle Ihre Artefakte verschwunden. Nexus verwendet eine flache Datei für Ihre wertvollen Artefakte, sodass Sie sich keine Sorgen machen müssen, dass sie alle verloren gehen.

Brian Fox
quelle
3
Das hat auch für uns den Unterschied gemacht. Ich stelle mir vor, es ist meistens nur Paranoia, aber es ist beruhigend zu wissen, dass es jederzeit einfach sein wird, das System zu inspizieren.
Jeremy Huiskamp
4
Aus diesem Grund planen wir, von Artifactory zu Nexus zu wechseln.
Kariem
2
+1 von einem anderen Opfer von Korruption; Ich habe seitdem Archiva und Nexus verwendet und beide scheinen ziemlich solide zu sein.
SimonJ
73
Diese Antwort ist veraltet. Artifactory kann jetzt so konfiguriert werden, dass Objekte im Dateisystem gespeichert werden.
M. Dudley
37
Solange ich Artifactory verwendet habe, hat es Dateisystemunterstützung für die tatsächlichen Artefakte. Aber ich benutze trotzdem eine Datenbank, weil unser Hauptdatenbankserver repliziert und gesichert wird. Ich sehe nicht, wie Dateisystemspeicher von Natur aus sicherer ist als eine Datenbank. Nichts gegen Nexus, nur um das aufzuklären.
Joshua Davis
9

Wenn Sie die "Pro" -Funktionen von beiden benötigen (z. B. Staging-Repos, Artefaktwerbung, NuGet), müssen Sie die verschiedenen Preismodelle berücksichtigen, die auf ihren Websites angezeigt werden.

Zusammenfassend:

  • Artifactory Pro
    • Sie zahlen pro Server
    • Sie können mehr für längere Servicezeiten bezahlen
  • Nexus Pro
    • Sie zahlen pro Sitzplatz , dh wie viele Entwickler Artefakte herunterladen
    • Der Support-Service ist nur Mo-Fr 0800-2000 ET, egal was Sie bezahlen

Unabhängig davon, wie viele Benutzer Sie haben, bietet Nexus Pro einen Support-Service, der im Großen und Ganzen dem "Silver Value Pack" von Artifactory für 7.450 USD / Jahr entspricht.

Mit 7.450 USD / Jahr erhalten Sie ungefähr 67 Nexus Pro-Sitze (1-50 @ 108 USD, der Rest 120 USD).

Allein in Bezug auf Preis und Support ist Nexus Pro sinnvoll, bis Sie 67 Benutzer erreicht haben. Ab diesem Zeitpunkt wird Artifactory zur günstigeren Option.

Wenn Sie die gesamte Unterstützung intern erledigen; Dieser magische Punkt liegt jedoch bei 23 Benutzern (das grundlegendste Supportangebot von Artifactory liegt bei 2.750 USD / Jahr).

RCross
quelle
8

Ich habe kürzlich einige Nachforschungen über Artifactory 2 und Nexus 1.3 angestellt. Ich werde hier die Hauptunterschiede auflisten, die ich gefunden habe:

  • Artifactory speichert Metadaten und optional Dateien in der Datenbank, Nexus schreibt direkt in das Dateisystem. Es gibt Profis. und Nachteile. für jeden Ansatz. DB unterstützt Transaktionen, während in FS auf gespeicherte Dateien direkt zugegriffen werden kann.
  • Artifactory hat höhere Systemanforderungen, insbesondere für Speicherplatz.
  • Artifactory unterstützt LDAP, Nexus nur in kostenpflichtiger Version. Auf der anderen Seite ist das kostenlose LDAP-Plugin für Nexus im Google-Code verfügbar.

Der vollständigste Vergleich: http://binary-repositories-comparison.github.io/

Sergey
quelle
Eigentlich ist Artifactory jetzt GPL.
Brian Fox
5
Nexus OSS unterstützt Ldap bereits für mehrere Versionen.
Brian Fox
1
Die künstliche Unterstützung für LDAP- Gruppen ist immer noch ein Pro-Feature: jfrog.com/confluence/display/RTF/LDAP+Groups
Steven Magana-Zook
1
Update Juli 2015: Codehaus ist jetzt tot, daher wurde die Matrix zu binary-repositories-comparison.github.io
JBaruch
7

Sie sollten Artifactory verwenden. Die neueste Version war ein echter Sprung. Sie können Ihre Repositorys schrittweise sichern, was bedeutet, dass Sie alle Ihre Artefakte speichern und pflegen können. Es verfügt über eine benutzerfreundliche Web-Benutzeroberfläche und ist sehr einfach einzurichten. Ich habe es sehr genossen aus seiner neuen Version 2.0


quelle
5

Aus Sicht der Lernenden stelle ich einige spezifische Unterschiede zwischen den beiden fest.

  1. Die Bereitstellung von Sonatype .war wird derzeit auf dem Jboss-Anwendungsserver nicht unterstützt, obwohl sie unter Tomcat ausgeführt wird.
  2. Sonatype bietet mir derzeit kein Amazon Machine Image (AMI) an, das ich schnell aufstehen und testen könnte.
  3. Ein Artifactory AMI wird von Bitnami bereitgestellt und benötigt nur wenige Minuten zum Aufstehen und einige Minuten zum Konfigurieren, möglicherweise mehrere zehn Minuten, je nachdem, was Sie erreichen möchten.
  4. Artifactory bietet eine SaaS-Version von Artifactory in der Cloud an, sodass Sie sich darauf konzentrieren können, Dinge zu erledigen und nicht auf die Infrastruktur.
  5. Ich habe keine Erfahrung mit Nexus, aber ich fand Artifactory zumindest anfangs sehr intuitiv und einfach zu konfigurieren.
  6. Hinzugefügt - Ich stelle fest, dass das Artifactory-Benutzerhandbuch, das für erfahrene Profis in Ordnung sein kann, für einige ausführliche Erklärungen ein wenig beleuchtet ist. Zum Beispiel wird zunächst ein Repository entpackt und dann hinzugefügt, beispielsweise das Jboss EAP Enterprise Repo von RedHat. Alles geht gut, aber als ich dann versuchte, die importierten Artefakte anzuzeigen, meldet Artifactory keine Artefakte? Keine Fehler oder Warnungen, daher suche ich jetzt nach einer Erklärung. Ist das normal oder nicht normal? Eine einfache Erklärung im Dokument kann schnell in die richtige Richtung weisen. Als guter Mitwirkender füge ich diese Kommentare dem Projekt zum Nutzen anderer Starter hinzu.
user3175893
quelle
3

Abgesehen von Politik / Religion macht die Lizenzierung für einige Organisationen einen Unterschied.

Nexus ist GPL, jetzt AGPLv3 und jetzt Eclipse Public License (EPL) .

Artifactory ist Apache-lizenziertes LGPLv3, lizenziert ab Version 2.1 des Produkts.

Vielleicht möchten Sie auch Archiva in Betracht ziehen , nur zum Vergleich. Es ist Apache 2.0 lizenziert.

Zac Thompson
quelle
5
Das ist ein Troll. Bringt die Tatsache, dass Linux GPL ist, Unternehmen davon ab, es zu verwenden? Es gibt einen Unterschied zwischen dem Einfügen eines Tools in ein Programm und dessen Verwendung .
Tim O'Brien
1
Ich wollte nicht trollen, aber ich schätze Ihren Standpunkt. Ich habe die Superlative aus dem Text entfernt.
Zac Thompson
4
@tobrien: FWIW, einige Organisationen (einschließlich mir) sind sehr vorsichtig , wenn sie verwenden GPL'ed Software, aus Angst vor rechtlichen Risiken. Ich möchte nicht über die (fehlende) Weisheit einer solchen Politik sprechen - ich vermute, wir würden uns vollkommen einig sein. Ich möchte nur darauf hinweisen, dass es für einige wichtig ist.
Zac Thompson
1
Ab 2.1 ist Artifactory ohnehin LGPL.
Brian Fox
1
@Zac @ user145026 Verknüpfen Sie Ihren Code mit Nexus-Bibliotheken? Wenn nicht, verstehe ich nicht, warum die GPL-Lizenz ein Problem darstellt.
Pascal Thivent
2

Ich sehe, dass die Nutzung von Nexus zunimmt, während die Nutzung von Artifcatory im Allgemeinen unverändert bleibt.

Geben Sie hier die Bildbeschreibung ein

Das Bild stammt von hier http://blog.sonatype.com/2014/11/42000-nexus-repository-managers-and-growing/

Es gibt auch einen Matrixvergleich http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix

Rofrol
quelle
3
1. Dieses Bild ist nicht korrekt, da es nur auf Maven Central-Anrufen basiert. Es gibt Downloads jenseits von Maven Central. 2. Codehaus ist jetzt tot, Matrix migriert zu binary-repositories-comparison.github.io
JBaruch
Nett. Hast du ein besseres Bild?
Rofrol
Sie können einige Zahlen finden hier .
JBaruch
1
Voreingenommen gegenüber Nexus, Voreingenommen gegenüber Jfrog - ich würde keinem der beiden Zahlen vertrauen.
Kyle Wiering
-2

Sowohl Artifactory als auch Nexus verfügen über mehr oder weniger ähnliche Funktionen, aber die LDAP-Unterstützung von Artifactory macht es gegenüber Nexus attraktiver. Nexus hat zwar auch LDAP-Unterstützung aber in kostenpflichtiger Version :-(

Vinod Singh
quelle
1
Es gibt ein Open Source LDAP Plugin für Nexus auf Google Code.
Brian Fox
3
LDAP-Unterstützung ist jetzt in der kostenlosen Version von Nexus, seit 1.5.0
David Roussel
-2

Hmmm ... meine Erfahrung mit Artifactory ist schrecklich ... aber ich bin ein relativer Neuling, also nimm es mit einem Körnchen Salz. Meine allgemeine Beschwerde ist, dass JAR-Dateien, die kürzlich in Artifactory hochgeladen wurden, nicht sofort indiziert zu werden scheinen - wie stundenlang - und es scheint keinen guten Weg zu geben, dies zu erzwingen. Ich habe verschiedene Dinge ausprobiert, die so aussahen, als hätten sie funktionieren sollen, aber nicht. Ich habe mit m2eclipse gearbeitet und einem Projekt, das ich von ant konvertiere, Abhängigkeiten hinzugefügt. Wenn ich versuche, ein Glas hinzuzufügen, das ich gerade zu artifactory hinzugefügt habe, erwarte ich, dass es als Auswahl in der Auswahl angezeigt wird, aber dies ist nicht der Fall.

Ein Mitarbeiter hat mir erzählt, dass sie Nexus installiert haben und es ihnen bisher gefällt ... aber ich kann noch nicht dafür bürgen. Ich bin dabei, das auf einer Linux-Box zu installieren, sobald die IT mich finden kann.

user494078
quelle
3
Sie beziehen sich auf Nexus-Indizes, die in Ihrem Fall von IDEs heruntergeladen und verwendet werden - vom m2eclipse-Plugin. Diese Indizes werden regelmäßig auf Clients heruntergeladen und sollten nicht bei jeder Bereitstellung verwendet werden. Mit Artifactory können Sie diese Indexaktualisierungen planen oder erzwingen. Zu Ihrer Information, die von Artifactory-Suchen (UI / REST) ​​verwendeten Indizes sind unterschiedlich und werden im Rahmen der Bereitstellung neuer Artefakte sofort und atomar aktualisiert. Tools wie IntelliJ nutzen dies, indem sie mithilfe der REST-API von Artifactory Suchvorgänge für das Repository anstelle eines lokal zwischengespeicherten Index ausführen.
Yoav Landman