Devrions-nous utiliser Nexus ou Artifactory pour un Maven Repo?

119

Nous utilisons Maven pour un grand processus de construction (> 100 modules). Nous stockons nos dépendances externes dans le contrôle de code source et les utilisons pour mettre à jour un dépôt local.

Cependant, nous sommes prêts à passer à un dépôt local qui peut mettre en cache central afin de ne pas avoir à télécharger de manière proactive toutes les tierces parties (mais nous pouvons toujours avoir un dépôt local à partir duquel tirer). De plus, nous souhaitons publier nos artefacts de build internes à partir d'une build de nuit afin que les développeurs n'aient pas à construire le monde.

Nous envisageons Nexus et Artifactory. Quelles sont les raisons de préférer l'un à l'autre? Y en a-t-il d'autres que nous devrions envisager?

John Stauffer
la source
2
Votre lien n'est pas trop objectif, voici l'autre côté réponse blogs.jfrog.org/2009/01/contrasting-artifactory-and-nexus.html
user58773
Je pense que vous devriez envisager un serveur http simple comme Apache ou nginx. Ce sont des "technologies ennuyeuses" ( mcfunley.com/choose-boring-technology ).
Johan Walles
5
@JohanWalles: plus comme "Technologie peu pratique et réductrice de productivité" dans ce contexte.
Priidu Neemre

Réponses:

74

Je ne connais pas Artifactory mais voici mes raisons d'utiliser Nexus:

  • Installation simple morte (et depuis la version 1.2, mise à niveau simple morte aussi)
  • Très bonne interface utilisateur Web
  • Facile à entretenir, presque pas de frais généraux administratifs
  • Vous fournit des flux RSS d'artefacts et d'erreurs récemment installés et endommagés
  • Il peut regrouper plusieurs référentiels afin que vous puissiez mettre en miroir plusieurs sources mais n'avez besoin que d'une ou deux entrées dans vos paramètres.xml
  • Le déploiement à partir de Maven fonctionne hors de la boîte (pas besoin de hacks WebDAV, etc.).
  • c'est gratuit
  • Vous pouvez rediriger les chemins d'accès (c'est-à-dire que certains pom.xml défectueux nécessitent "abc" de "xxx"). Au lieu de patcher le POM, vous pouvez corriger le bogue dans Nexus et rediriger la requête vers l'endroit où se trouve réellement l'artefact.
Aaron Digulla
la source
3
Nexus a une excellente interface utilisateur Web pour créer des tâches planifiées régulièrement qui peuvent purger les INSTANTANÉS. Artifactory ne l'a pas (encore).
HDave
118

Je suis sûr que si vous ne parlez que de stocker des binaires à partir de " mvn deploy", les deux fonctionneront très bien.

Nous utilisons Artifactory très largement avec toutes les mises à niveau en cours de route. Beaucoup de projets, de nombreux snapshots déployés et des dépôts externes par proxy. Pas un seul problème. J'ai du mal à expliquer comment d'autres personnes rencontrent des problèmes avec sa base de données, son indexation ou quoi que ce soit d'autre. Rien de tel ne nous est jamais arrivé. De plus, Artifactory permet de stocker des données sur un disque et d'utiliser uniquement une base de données pour stocker des métadonnées, c'est assez flexible ( voir plus ici ).

Ce qui rend ces applications très différentes, c'est leur approche d'intégration avec d'autres outils et technologies de construction. Nexus et Sonatype sont à peu près verrouillés sur Maven et m2eclipse. Ils ignorent tout le reste et n'ont commencé que récemment à travailler sur leur propre intégration propriétaire Hudson (voir leur webinaire Maven 3 ). EDIT: Ce n'est plus vrai à partir de 2017 Nexus offre un support beaucoup plus large pour les autres outils de construction Fin de l'édition

Artifactory fournit une intégration impressionnante de Hudson, TeamCity et Bamboo , ainsi que le support Gradle / Ivy . Ainsi, alors que Nexus ne vous donne rien une fois que vous sortez de la «zone de confort» de Sonatype (Maven, m2eclipse), Artifactory embrasse et collabore avec tous les principaux outils de construction.

En fait, être capable de déployer des artefacts de construction à partir d'Hudson, lorsque le travail est terminé, et non par " mvn deploy" est une énorme différence: le plugin Artifactory Hudson effectue un déploiement de type atomique de tous les artefacts à la fois , uniquement lorsqu'un travail de construction s'est terminé avec succès. " mvn deploy" s'exécute après chaque module et peut déployer un ensemble partiel d'artefacts si une tâche de construction échoue au milieu. Déployer à partir de Maven à la fin du module et non à partir d'un serveur de build à la fin du travail est vraiment une mauvaise chose à faire.

Comme vous le voyez, Artifactory pense "en dehors de la boîte" tandis que Nexus pense "à l'intérieur de la boîte" et ne se soucie que des artefacts Maven et Maven.

Une autre chose qui rend Artifactory plus accessible est leur solution Artifactory Online basée sur le cloud . Pour environ 80 $ par mois, vous avez votre propre instance Artifactory, pas besoin de lui dédier un serveur.

Artifactory a une API REST simple et directe , je ne sais pas comment cela fonctionne pour Nexus. Edit Nexus dispose également d'une API REST que vous pouvez également utiliser facilement.

Pour résumer, pour le stockage de base des artefacts Maven, je pense que les deux vont bien. Mais alors que Nexus cesse d'être strictement un "gestionnaire de référentiels Maven", Artifactory continue encore et encore, étant un "stockage binaire" général pour les binaires de tout type, de tout outil de construction et serveur CI.

Evgeny Goldin
la source
9
Je suis désolé mais je sens le FUD ici. Nexus n'est certainement pas "verrouillé sur Maven et m2eclipse", il s'intègre parfaitement bien avec Jenkins, TeamCity et Bamboo. Il a une API REST simple et directe; chaque fonctionnalité Nexus est exposée en tant que point de terminaison REST. Il n'est pas vrai de dire que Nexus "ne se soucie que des artefacts Maven et Maven"; il prend également en charge .Net (NuGet), Gradle / Ivy, OSGI et peut héberger des référentiels Yum RPM. En termes de stockage d'artefacts, tar, zip, rar, par sont inclus avec les types d'archives Java standard.
RCross
25
Mec, cette réponse a été postée il y a 4 ans :) Il ne s'agit plus de Maven? Bon pour ça alors!
Evgeny Goldin le
3
@EvgenyGoldin Ne rend pas son commentaire moins pertinent (sauf pour la partie FUD ^^).
OddDev
4
Maintenant que ce message a sept ans et que les API REST sont plus ou moins obligatoires avec des outils, Nexus semble toujours craindre. L'utilisation de Nexus3 là-bas API est essentiellement rpc; vous devez télécharger un petit script pour exécuter ce que vous voulez faire. Artifactory, d'autre part, semble exposer une API bien pensée qui a une bonne documentation.
thecoshman
27

Artifactory prend en charge les backends de stockage de système de fichiers et de base de données. Le stockage est basé sur la somme de contrôle et les binaires identiques ne sont stockés qu'une seule fois, quel que soit le nombre de fois qu'ils apparaissent dans le dépôt, ce qui rend Artifactory plus efficace en termes de stockage. Le déplacement et la copie sont également très bon marché en raison de cette architecture (dans Nexus, il n'y a pas de REST pour déplacer / copier - vous devez déplacer des éléments sur le système de fichiers, puis exécuter des actions correctives sur le dépôt pour lui faire savoir que le contenu a changé).

Un autre facteur de différenciation important est qu'Artifactory a une intégration unique avec Hudson et TeamCity pour capturer des informations sur les artefacts déployés, les dépendances résolues et les données d'environnement associées aux exécutions de build, ce qui offre une traçabilité complète de la build.

Yoav Landman
la source
1
Artifactory prend également en charge la persistance S3.
Tim Ferrell
@TimFerrell, ce n'est pas faux, mais à un prix prohibitif pour la plupart des magasins dans lesquels je travaille généralement.
Sander Verhagen
21

Artifactory stocke les artefacts dans une base de données, ce qui signifie qu'en cas de problème, tous vos artefacts ont disparu. Nexus utilise un fichier plat pour vos précieux artefacts afin que vous n'ayez pas à vous soucier de leur perte.

Brian Fox
la source
3
C'est ce qui a fait la différence pour nous aussi. J'imagine que c'est principalement de la paranoïa, mais il est réconfortant de savoir qu'il sera facile d'inspecter le système à tout moment.
Jeremy Huiskamp
4
Nous prévoyons de passer d'Artifactory à Nexus pour cette raison.
Kariem
2
+1 d'une autre victime de corruption; J'ai utilisé Archiva et Nexus depuis lors et les deux semblent assez solides.
SimonJ
73
Cette réponse est dépassée. Artifactory peut maintenant être configuré pour stocker des objets sur le système de fichiers.
M. Dudley
37
Tant que j'ai utilisé Artifactory, il a pris en charge le système de fichiers pour les artefacts réels. Mais j'utilise quand même une base de données car notre serveur de base de données principal est répliqué et sauvegardé. Je ne vois pas en quoi le stockage du système de fichiers est intrinsèquement plus sûr qu'une base de données. Rien contre Nexus, j'essaie juste d'éclaircir ça.
Joshua Davis
9

Si vous avez besoin des fonctionnalités "Pro" de l'un ou l'autre (par exemple, mise en dépôt, promotion d'artefacts, NuGet), vous devez prendre en compte les différents modèles de tarification, qui sont affichés sur leurs sites Web.

En résumé:

  • Artifactory Pro
    • vous payez par serveur
    • vous pouvez payer plus pour des heures de service accrues
  • Nexus Pro
    • vous payez par siège , c'est-à-dire combien de développeurs téléchargent des artefacts
    • le service d'assistance est uniquement disponible du lundi au vendredi de 8h00 à 2000 HE, quel que soit votre paiement

Quel que soit le nombre d'utilisateurs que vous avez, Nexus Pro offre un service d'assistance qui équivaut globalement au "Silver Value Pack" d'Artifactory à 7 450 $ / an.

7450 $ / an vous permettront d'acheter environ 67 sièges Nexus Pro (1-50 @ 108 $, le reste @ 120 $).

Sur le plan du prix et du support seuls, Nexus Pro a du sens jusqu'à ce que vous atteigniez 67 utilisateurs, auquel cas Artifactory devient l'option la moins chère.

Si vous faites tout le soutien en interne; cependant, ce point magique est d'environ 23 utilisateurs (l'offre de support la plus basique d'Artifactory est de 2750 $ / an).

RCross
la source
8

J'ai récemment fait des recherches sur Artifactory 2 et Nexus 1.3. Je vais lister ici les principales différences que j'ai trouvées:

  • Artifactory stocke les métadonnées et éventuellement les fichiers dans DB, Nexus écrit directement dans le système de fichiers. Il y a des pros. et contre. pour chaque approche. DB prend en charge les transactions, tandis que dans FS, les fichiers stockés sont accessibles directement.
  • Artifactory a des exigences système plus élevées, en particulier pour l'espace disque.
  • Artifactory prend en charge LDAP, tandis que Nexus ne le propose qu'en version payante. D'autre part, le plugin LDAP gratuit pour Nexus est disponible sur le code Google.

La comparaison la plus complète: http://binary-repositories-comparison.github.io/

Sergey
la source
En fait, Artifactory est maintenant GPL.
Brian Fox
5
Nexus OSS prend désormais en charge Ldap pour plusieurs versions.
Brian Fox
1
Le support Artifactory pour les groupes LDAP est toujours une fonctionnalité professionnelle: jfrog.com/confluence/display/RTF/LDAP+Groups
Steven Magana-Zook
1
Mise à jour de juillet 2015: Codehaus est mort maintenant, donc la matrice a migré vers binary-repositories-comparison.github.io
JBaruch
7

Vous devriez utiliser Artifactory Sa dernière version a été un véritable saut Vous pouvez sauvegarder de manière incrémentielle vos référentiels, ce qui signifie que vous pouvez enregistrer et maintenir tous vos artefacts. Son interface Web est facile à utiliser et est vraiment facile à configurer. sort sa nouvelle version 2.0


la source
5

Du point de vue des apprenants, je note certaines différences spécifiques entre les deux.

  1. Le déploiement de Sonatype .war n'est pas pris en charge sur le serveur d'applications Jboss à l'époque, bien qu'il s'exécute sous Tomcat.
  2. Sonatype ne me propose pas une Amazon Machine Image (AMI), pour le moment, que je pourrais rapidement me lever et tester.
  3. Une AMI Artifactory est fournie par Bitnami et ne prend que quelques minutes pour se lever et quelques minutes de plus pour configurer, peut-être plusieurs dizaines de minutes en fonction de ce que vous essayez de réaliser.
  4. Artifactory propose une version SaaS d'Artifactory dans le cloud afin que vous puissiez vous concentrer sur la réalisation des tâches plutôt que sur l'infrastructure.
  5. Je n'ai aucune expérience avec Nexus mais j'ai trouvé Artifactory très intuitif et facile à configurer, du moins au début.
  6. Ajouté - Je note que le guide de l'utilisateur Artifactory, qui peut convenir à un professionnel chevronné, est un peu léger pour des explications approfondies. Par exemple, au début, on décompresse puis ajoute un référentiel, par exemple Jboss EAP Enterprise Repo de RedHat. Tout va bien, mais quand j'ai essayé de voir les artefacts importés, Artifactory ne signale aucun artefact? Pas d'erreurs ni d'avertissements donc je cherche maintenant une explication. Est-ce normal ou pas normal? Une simple explication dans le doco peut rapidement nous orienter dans la bonne direction. Étant un bon contributeur, j'ajoute ces commentaires au projet pour le bénéfice d'autres démarreurs.
user3175893
la source
3

Mis à part toute politique / religion, les licences font une différence pour certaines organisations.

Nexus est GPL maintenant AGPLv3 et maintenant Eclipse Public License (EPL) .

Artifactory est une licence Apache LGPLv3 sous licence à partir de la version 2.1 du produit.

Vous pouvez également envisager Archiva , juste à titre de comparaison. Il s'agit d'une licence Apache 2.0.

Zac Thompson
la source
5
Eh bien, c'est un troll. Le fait que Linux soit GPL dissuade les organisations de l'utiliser? Il y a une différence entre incorporer un outil dans un programme et l' utiliser .
Tim O'Brien
1
Je ne voulais pas troller, mais j'apprécie votre point de vue. J'ai supprimé les superlatifs du texte.
Zac Thompson
4
@tobrien: FWIW, certaines organisations (y compris la mienne) sont très prudentes lorsqu'elles utilisent des logiciels sous GPL, craignant une exposition légale. Je ne veux pas discuter du (manque de) sagesse d'une telle politique - je suppose que nous serions entièrement d'accord. Juste en soulignant que pour certains, c'est important.
Zac Thompson
1
Depuis la version 2.1, Artifactory est de toute façon LGPL.
Brian Fox
1
@Zac @ user145026 Liez-vous votre code aux bibliothèques Nexus? Sinon, je ne vois pas pourquoi la licence GPL est un problème.
Pascal Thivent
2

Je vois que l'utilisation de Nexus augmente, tandis que l'utilisation artificielle reste généralement stable.

entrez la description de l'image ici

L'image est prise d'ici http://blog.sonatype.com/2014/11/42000-nexus-repository-managers-and-growing/

Il existe également une comparaison matricielle http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix

rofrol
la source
3
1. Cette image n'est pas exacte, car elle repose uniquement sur les appels Maven Central. Il existe des téléchargements au-delà de Maven Central. 2. Codehaus est mort maintenant, la matrice a migré vers binary-repositories-comparison.github.io
JBaruch
Agréable. Avez-vous une meilleure image?
rofrol
Vous pouvez trouver quelques chiffres ici .
JBaruch
1
Particulier envers Nexus, biaisé envers jfrog - je ne ferais confiance à aucun des ensembles de chiffres.
Kyle Wiering
-2

Artifactory et Nexus ont un ensemble de fonctionnalités plus ou moins similaires, mais la prise en charge LDAP d'Artifactory le rend plus attrayant par rapport à Nexus. Bien que Nexus ait également un support LDAP mais en version payante :-(

Vinod Singh
la source
1
Il existe un plugin LDAP open source pour Nexus sur google code.
Brian Fox
3
Le support LDAP est maintenant dans la version gratuite de Nexus, depuis la 1.5.0
David Roussel
-2

Hmmm ... mon expérience avec les artificiels est horrible ... mais je suis un débutant relatif alors prenez-le avec un grain de sel. Ma plainte générale est que les fichiers jar récemment téléchargés sur Artifactory ne semblent pas être indexés immédiatement - comme pendant des heures - et il ne semble pas y avoir de bon moyen de le forcer. J'ai essayé diverses choses qui semblaient devoir fonctionner, mais je ne l'ai pas fait. J'ai travaillé avec m2eclipse, ajoutant des dépendances à un projet que je convertis à partir de fourmi. Lorsque j'essaie d'ajouter un pot que je viens d'ajouter à l'artificiel, je m'attends à ce qu'il apparaisse comme un choix dans le sélecteur, mais ce n'est pas le cas.

un collègue m'a dit qu'ils avaient installé nexus et jusqu'à présent ils l'aiment ... mais je ne peux pas encore en garantir. Je suis sur le point de l'installer sur une machine Linux dès qu'il pourra m'en trouver une.

utilisateur494078
la source
3
Vous faites référence aux index Nexus qui sont téléchargés et consommés par les IDE, dans votre cas - par le plugin m2eclipse. Ces index sont téléchargés périodiquement vers les clients et ne sont pas destinés à être utilisés à chaque déploiement. Artifactory vous permet de planifier ces mises à jour d'index ou de les forcer. Pour info, les index utilisés par les recherches Artifactory (UI / REST) ​​sont différents et sont mis à jour immédiatement et de manière atomique dans le cadre du déploiement de nouveaux artefacts. Des outils comme IntelliJ utilisent cela en exécutant des recherches sur le référentiel plutôt qu'un index mis en cache localement, en utilisant l'API REST d'Artifactory.
Yoav Landman