¿Deberíamos usar Nexus o Artifactory para un repositorio de Maven?

119

Estamos usando Maven para un gran proceso de construcción (> 100 módulos). Hemos estado almacenando nuestras dependencias externas en el control de código fuente y usándolo para actualizar un repositorio local.

Sin embargo, estamos listos para pasar a un repositorio local que puede almacenar en caché central para que no tengamos que descargar de forma proactiva todos los terceros (pero aún podemos tener un repositorio local del que extraer). Además, queremos publicar nuestros artefactos de compilación internos a partir de una compilación nocturna para que los desarrolladores no tengan que construir el mundo.

Estamos considerando Nexus y Artifactory. ¿Cuáles son las razones para preferir una sobre la otra? ¿Hay otros que deberíamos considerar?

John Stauffer
fuente
2
Su enlace no es demasiado objetivo, aquí está la respuesta del otro lado blogs.jfrog.org/2009/01/contrasting-artifactory-and-nexus.html
user58773
Creo que debería considerar un servidor http simple como Apache o nginx. Son "Tecnología aburrida" ( mcfunley.com/choose-boring-technology ).
Johan Walles
5
@JohanWalles: más como "Tecnología incómoda y que reduce la productividad" en este contexto.
Priidu Neemre

Respuestas:

74

No sé sobre Artifactory, pero estas son mis razones para usar Nexus:

  • Instalación completamente simple (y desde 1.2, también una actualización completamente simple)
  • Muy buena interfaz de usuario web
  • Fácil de mantener, casi sin gastos administrativos
  • Le proporciona feeds RSS de errores y artefactos rotos instalados recientemente
  • Puede agrupar varios repositorios para que pueda reflejar varias fuentes, pero solo necesita una o dos entradas en su configuración.xml
  • La implementación desde Maven funciona desde el primer momento (sin necesidad de hacks de WebDAV, etc.).
  • es gratis
  • Puede redirigir las rutas de acceso (es decir, algunos pom.xml rotos requieren "abc" de "xxx"). En lugar de parchear el POM, puede corregir el error en Nexus y redirigir la solicitud al lugar donde realmente se encuentra el artefacto.
Aaron Digulla
fuente
3
Nexus tiene una excelente interfaz de usuario web para crear trabajos programados regularmente que pueden eliminar INSTANTÁNEAS. Artifactory no tiene esto (todavía).
HDave el
118

Estoy seguro de que si solo habla de almacenar binarios de " mvn deploy" ambos funcionarán bien.

Usamos Artifactory ampliamente con todas las actualizaciones en el camino. Muchos proyectos, numerosas instantáneas implementadas y repositorios externos con proxy. Ni un solo problema. Me resulta difícil explicar cómo otras personas experimentan problemas con su base de datos, indexación o cualquier otra cosa. Nunca nos ha pasado nada parecido. Además, Artifactory permite almacenar datos en un disco y solo usar una base de datos para almacenar metadatos, es bastante flexible ( ver más aquí ).

Lo que hace que esas aplicaciones sean muy diferentes es su enfoque hacia la integración con otras herramientas y tecnologías de construcción. Nexus y Sonatype están prácticamente bloqueados en Maven y m2eclipse. Ignoran cualquier otra cosa y solo recientemente comenzaron a trabajar en su propia integración patentada de Hudson (consulte su seminario web Maven 3 ). EDITAR: Esto ya no es cierto a partir de 2017, Nexus brinda un soporte mucho mayor para otras herramientas de compilación Fin de la edición

Artifactory proporciona una increíble integración de Hudson, TeamCity y Bamboo , y compatibilidad con Gradle / Ivy . Entonces, aunque Nexus no le brinda nada una vez que sale de la "zona de confort" de Sonatype (Maven, m2eclipse), Artifactory adopta y colabora con todas las principales herramientas de construcción.

De hecho, poder implementar artefactos de compilación desde Hudson, cuando el trabajo ha terminado, y no por " mvn deploy", es una gran diferencia: el complemento Artifactory Hudson realiza una implementación de tipo atómico de todos los artefactos a la vez , solo cuando un trabajo de compilación finalizó correctamente. " mvn deploy" se ejecuta después de cada módulo y puede implementar un conjunto parcial de artefactos si un trabajo de compilación falla en el medio. Implementar desde Maven al finalizar el módulo y no desde un servidor de compilación al finalizar el trabajo es realmente algo malo.

Como ves, Artifactory piensa "fuera de la caja" mientras que Nexus piensa "dentro de la caja" y solo se preocupa por los artefactos Maven y Maven.

Otra cosa que hace que Artifactory sea más accesible es su solución Artifactory Online basada en la nube . Por alrededor de $ 80 al mes, tiene su propia instancia de Artifactory, sin necesidad de dedicarle ningún servidor.

Artifactory tiene una API REST simple y directa , no sé cómo funciona para Nexus. Edit Nexus también tiene una API REST que también puede usar fácilmente.

En resumen, para el almacenamiento básico de artefactos de Maven, creo que ambos están bien. Pero mientras Nexus deja de ser estrictamente un "administrador de repositorio de Maven", Artifactory sigue y sigue, siendo un "almacenamiento de binarios" general para binarios de cualquier tipo, desde cualquier herramienta de compilación y servidor de CI.

Evgeny Goldin
fuente
9
Lo siento, pero huelo FUD aquí. Ciertamente, Nexus no está "bloqueado en Maven y m2eclipse", se integra perfectamente con Jenkins, TeamCity y Bamboo. Tiene una API REST simple y directa; todas las funciones de Nexus se exponen como un punto final REST. No es cierto decir que Nexus "solo se preocupa por los artefactos Maven y Maven"; también es compatible con .Net (NuGet), Gradle / Ivy, OSGI y puede alojar repositorios Yum RPM. En términos de almacenamiento de artefactos, tar, zip, rar, par se incluyen junto con los tipos de archivos estándar de Java.
RCross
25
Amigo, esa respuesta fue publicada hace 4 años :) ¿Ya no se trata de Maven? ¡Bien por eso entonces!
Evgeny Goldin
3
@EvgenyGoldin No hace que su comentario sea menos relevante (excepto de la parte FUD ^^).
OddDev
4
Ahora que esta publicación tiene siete años, y las API REST son más o menos obligatorias con las herramientas, Nexus todavía parece apestar en esto. Usando Nexus3, la API de descanso es básicamente rpc; tienes que subir un pequeño script para ejecutar lo que quieres hacer. Artifactory, por otro lado, parece exponer una API bien pensada que tiene buena documentación.
thecoshman
27

Soportes Artifactory ambos archivos del sistema y backends de almacenamiento de base de datos. El almacenamiento se basa en la suma de comprobación y los binarios idénticos se almacenan solo una vez, sin importar cuántas veces aparezcan en el repositorio, lo que hace que Artifactory sea más eficiente en cuanto al almacenamiento. Mover y copiar también son muy baratos debido a esta arquitectura (en Nexus no hay REST para mover / copiar; tienes que mover cosas en el sistema de archivos y luego ejecutar acciones correctivas en el repositorio para que sepa que el contenido ha cambiado).

Otro diferenciador importante es que Artifactory tiene una integración única con Hudson y TeamCity para capturar información sobre artefactos implementados, dependencias resueltas y datos del entorno asociados con ejecuciones de compilación, lo que proporciona una trazabilidad completa de compilación.

Yoav Landman
fuente
1
Artifactory también admite la persistencia de S3.
Tim Ferrell
@TimFerrell, no es falso, pero a un precio que es prohibitivamente caro para la mayoría de las tiendas en las que generalmente trabajo.
Sander Verhagen
21

Artifactory almacena los artefactos en una base de datos, lo que significa que si algo sale mal, todos tus artefactos desaparecen. Nexus utiliza un archivo plano para sus preciosos artefactos, por lo que no tiene que preocuparse de que se pierdan.

Brian Fox
fuente
3
Eso fue lo que marcó la diferencia para nosotros también. Me imagino que es principalmente paranoia, pero es reconfortante saber que será fácil inspeccionar el sistema en cualquier momento.
Jeremy Huiskamp
4
Estamos planeando cambiar de Artifactory a Nexus debido a esto.
Kariem
2
+1 de otra víctima de corrupción; He usado Archiva y Nexus desde entonces y ambos parecen bastante sólidos.
SimonJ
73
Esta respuesta está desactualizada. Artifactory ahora se puede configurar para almacenar objetos en el sistema de archivos.
M. Dudley
37
Siempre que he usado Artifactory, ha tenido soporte de sistema de archivos para los artefactos reales. Pero utilizo una base de datos de todos modos porque nuestro servidor de base de datos principal está replicado y respaldado. No veo cómo el almacenamiento del sistema de archivos es intrínsecamente más seguro que una base de datos. Nada en contra de Nexus, solo intento aclarar esto.
Joshua Davis
9

Si necesita las características "Pro" de cualquiera (por ejemplo, repositorios de prueba, promoción de artefactos, NuGet), debe considerar los diferentes modelos de precios, que se muestran en sus sitios web.

En resumen:

  • Artifactory Pro
    • pagas por servidor
    • puede pagar más por aumentar las horas de servicio
  • Nexus Pro
    • pagas por puesto , es decir, cuántos desarrolladores descargan artefactos
    • El servicio de soporte es de lunes a viernes 0800-2000 ET únicamente, sin importar lo que pague

No importa cuántos usuarios tenga, Nexus Pro ofrece un servicio de asistencia que equivale en líneas generales al "Paquete Silver Value" de Artifactory de $ 7,450 / año.

$ 7,450 / año le permitirá comprar aproximadamente 67 asientos Nexus Pro (1-50 a $ 108, el resto a $ 120).

Entonces, solo en precio y soporte, Nexus Pro tiene sentido hasta que llegue a 67 usuarios, momento en el que Artifactory se convierte en la opción más barata.

Si está haciendo todo el apoyo en la empresa; sin embargo, ese punto mágico son unos 23 usuarios (la oferta de soporte más básica de Artifactory es de $ 2,750 / año).

RCross
fuente
8

Recientemente, investigué un poco sobre Artifactory 2 y Nexus 1.3. Enumeraré aquí las principales diferencias que encontré:

  • Artifactory almacena metadatos y, opcionalmente, archivos en DB, Nexus escribe directamente en el sistema de archivos. Hay pros. y contras. para cada enfoque. DB admite transacciones, mientras que en FS se puede acceder directamente a los archivos almacenados.
  • Artifactory tiene requisitos de sistema más altos, especialmente para espacio en disco.
  • Artifactory tiene soporte LDAP, mientras que Nexus solo lo tiene en la versión paga. Por otro lado, el complemento LDAP gratuito para Nexus está disponible en el código de Google.

La comparación más completa: http://binary-repositories-comparison.github.io/

Sergey
fuente
En realidad, Artifactory ahora es GPL.
Brian Fox
5
Nexus OSS tiene soporte Ldap para varias versiones ahora.
Brian Fox
1
El soporte de artefactos para grupos LDAP sigue siendo una característica profesional: jfrog.com/confluence/display/RTF/LDAP+Groups
Steven Magana-Zook
1
Actualización de julio de 2015: Codehaus está muerto ahora, por lo que la matriz migró a binary-repositories-comparison.github.io
JBaruch
7

Deberías usar Artifactory Su última versión fue un gran salto.Puedes hacer copias de seguridad incrementales de tus repositorios, lo que significa que puedes guardar y mantener todos tus artefactos.Tiene una interfaz de usuario web fácil de usar y es muy fácil de configurar, lo disfruté mucho. saca su nueva versión 2.0


fuente
5

Desde el punto de vista de los estudiantes, noto algunas diferencias específicas entre los dos.

  1. La implementación de Sonatype .war no es compatible con el servidor de aplicaciones Jboss en ese momento, aunque se ejecuta en Tomcat.
  2. Sonatype no me ofrece una imagen de máquina de Amazon (AMI), en este momento, que pueda ponerme de pie y probar rápidamente.
  3. Bitnami proporciona una AMI de artefactos y solo tarda unos minutos en levantarse y unos minutos más en configurar, tal vez varias decenas de minutos dependiendo de lo que esté tratando de lograr.
  4. Artifactory ofrece una versión SaaS de Artifactory en la nube para que pueda concentrarse en hacer las cosas en lugar de en la infraestructura.
  5. No tengo experiencia con Nexus pero he encontrado Artifactory muy intuitivo y fácil de configurar, al menos inicialmente.
  6. Agregado: noto que la Guía del usuario de Artifactory, que puede estar bien para un profesional experimentado, es un poco ligera para algunas explicaciones detalladas. Por ejemplo, al comenzar, uno descomprime y luego agrega un Repositorio, digamos Jboss EAP Enterprise Repo de RedHat. Todo va bien, pero luego, cuando intenté ver los artefactos que se importaron, ¿Artifactory informa de cero artefactos? Sin errores ni advertencias, ahora estoy buscando una explicación. ¿Es esto normal o no es normal? Una simple explicación en el documento puede apuntar rápidamente a uno en la dirección correcta. Siendo un buen colaborador, estoy agregando estos comentarios al proyecto en beneficio de otros principiantes.
usuario3175893
fuente
3

Dejando a un lado la política / religión, la concesión de licencias marca la diferencia para algunas organizaciones.

Nexus es GPL ahora AGPLv3 y ahora Eclipse Public License (EPL) .

Artifactory tiene licencia LGPLv3 de Apache a partir de la versión 2.1 del producto.

También puede considerar Archiva , solo por el bien de la comparación. Tiene licencia de Apache 2.0.

Zac Thompson
fuente
5
Esto es un troll. ¿El hecho de que Linux sea GPL disuade a las organizaciones de usarlo? Existe una diferencia entre incorporar una herramienta a un programa y usarla .
Tim O'Brien
1
No era mi intención hacer trolls, pero aprecio tu punto. Eliminé los superlativos del texto.
Zac Thompson
4
@tobrien: FWIW, algunas organizaciones (incluida la mía) son muy cautelosas cuando usan software con GPL, por temor a la exposición legal. No quiero discutir la (falta de) sabiduría de tal política; sospecho que estaríamos completamente de acuerdo. Solo señalando que para algunos, es importante.
Zac Thompson
1
A partir de 2.1, Artifactory es LGPL de todos modos.
Brian Fox
1
@Zac @ user145026 ¿Estás vinculando tu código a las bibliotecas de Nexus? Si no es así, no veo por qué la licencia GPL es un problema.
Pascal Thivent
2

Veo que el uso de Nexus está creciendo, mientras que el uso de Artifcatory generalmente se mantiene estable.

ingrese la descripción de la imagen aquí

La imagen se toma desde aquí http://blog.sonatype.com/2014/11/42000-nexus-repository-managers-and-growing/

También hay una comparación de matrices http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix

rofrol
fuente
3
1. Esta imagen no es precisa, ya que se basa únicamente en llamadas de Maven Central. Hay descargas más allá de Maven Central. 2. Codehaus está muerto ahora, matriz migrada a binary-repositories-comparison.github.io
JBaruch
Agradable. ¿Tienes alguna foto mejor?
rofrol
Puedes encontrar algunos números aquí .
JBaruch
1
Biased hacia Nexus, Biased hacia jfrog: no confiaría en ninguno de los conjuntos de números.
Kyle Wiering
-2

Tanto Artifactory como Nexus tienen un conjunto de características más o menos similares, pero el soporte LDAP de Artifactory lo hace más atractivo que Nexus. Aunque Nexus también tiene soporte LDAP pero en versión paga :-(

Vinod Singh
fuente
1
Hay un complemento LDAP de código abierto para Nexus en el código de Google.
Brian Fox
3
El soporte LDAP ahora está en la versión gratuita de Nexus, desde 1.5.0
David Roussel
-2

Hmmm ... mi experiencia con los artefactos es terrible ... pero soy un novato relativo, así que tómalo con un grano de sal. Mi queja general es que los archivos jar cargados recientemente en Artifactory no parecen indexarse ​​de inmediato, como en horas, y no parece haber una buena manera de forzarlo. Probé varias cosas que parecían que deberían haber funcionado, pero no lo hicieron. He estado trabajando con m2eclipse, agregando dependencias a un proyecto que estoy convirtiendo de ant. Cuando intento agregar un frasco que acabo de agregar al artefactor, espero que aparezca como una opción en el selector, pero no es así.

un compañero de trabajo me dijo que habían instalado nexus y que hasta ahora les gusta ... pero todavía no puedo dar fe de ello. Estoy a punto de instalarlo en una caja de Linux tan pronto como pueda encontrarme uno.

user494078
fuente
3
Se refiere a los índices Nexus que los IDE descargan y consumen, en su caso, el complemento m2eclipse. Estos índices se descargan periódicamente a los clientes y no deben consumirse en cada implementación. Artifactory le permite programar estas actualizaciones de índices o forzarlas. Para su información, los índices utilizados por las búsquedas de artefactos (UI / REST) ​​son diferentes y se actualizan de forma inmediata y atómica como parte de la implementación de nuevos artefactos. Herramientas como IntelliJ hacen uso de esto al ejecutar búsquedas en el repositorio en lugar de un índice almacenado en caché local, utilizando la API REST de Artifactory.
Yoav Landman