maven 2 - pom - ¿Deberíamos usar Nexus o Artifactory para un Maven Repo?
maven repository (12)
Estamos utilizando Maven para un gran proceso de compilació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 graduarnos en un repositorio local que puede almacenar en caché central para que no tengamos que descargar proactivamente todos los terceros (pero aún podemos tener un repositorio local para obtener). Además, queremos publicar nuestros artefactos de construcción internos a partir de una construcción nocturna para que los desarrolladores no tengan que construir el mundo.
Estamos considerando Nexus y Artifactory. ¿Cuáles son las razones para preferir uno sobre el otro? ¿Hay otros que deberíamos considerar?
Artifactory admite back-end de almacenamiento de bases de datos y sistemas de archivos. El almacenamiento se basa en la suma de comprobación y los archivos 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 términos de almacenamiento. Mover y copiar también son muy baratos debido a esta arquitectura (en Nexus no hay DESCANSO para mover / copiar - tiene que mover cosas en el sistema de archivos, luego ejecutar acciones correctivas en el repositorio para informarle 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 desplegados, dependencias resueltas y datos de entorno asociados con ejecuciones de compilación, lo que proporciona una trazabilidad de compilación completa.
Artifactory almacena los artefactos en una base de datos, lo que significa que si algo sale mal, todos tus artefactos desaparecerán. Nexus usa un archivo plano para tus artefactos preciosos para que no tengas que preocuparte de que todos se pierdan.
Deberías usar Artifactory. Su última versión fue un salto real. Puedes hacer copias de seguridad incrementales de tus repositorios, lo que significa que puedes guardar todos tus artefactos y mantenerlos. Tiene una interfaz web fácil de usar y es realmente fácil de configurar. Lo disfruté mucho. su nueva versión 2.0
Dejando a un lado la política y la religión, las licencias marcan la diferencia para algunas organizaciones.
Nexus es GPL ahora AGPLv3 y ahora licencia pública de Eclipse (EPL) .
Artifactory es una licencia LGPLv3 licenciada por Apache a partir de la versión 2.1 del producto.
También puede considerar Archiva , solo por razones de comparación. Es una licencia Apache 2.0.
Desde el punto de vista de los alumnos, observo algunas diferencias específicas entre los dos.
- La implementación de Sonatype .war no es compatible con el servidor de aplicaciones Jboss en ese momento, aunque se ejecuta bajo Tomcat.
- Sonatype no me ofrece una Amazon Machine Image (AMI), en este momento, que pueda ponerme de pie y probar rápidamente.
- Bitnami proporciona una AMI de artefactory y toma unos pocos minutos para ponerse de pie y unos minutos más para configurar, tal vez varias decenas de minutos dependiendo de lo que intente lograr.
- Artifactory ofrece una versión SaaS de Artifactory en la nube para que pueda concentrarse en hacer las cosas en lugar de infraestructura.
- No tengo experiencia con Nexus pero he encontrado que Artifactory es muy intuitivo y fácil de configurar, al menos inicialmente.
- Agregado: observo que la Guía del usuario de Artifactory, que puede estar bien para un profesional experimentado, es un poco ligera para algunas explicaciones en profundidad. Por ejemplo, al comenzar, uno se descomprime y luego agrega un Repositorio, digamos Repositorio Enterprise EAP JBoss de RedHat. Todo va bien, pero cuando intenté ver los artefactos que se importaron, Artifactory informa cero artefactos. No hay errores o advertencias, así que ahora estoy buscando una explicación. ¿Es esto normal o no normal? Una explicación simple en el doco puede apuntar rápidamente a uno en la dirección correcta. Como soy un buen contribuyente, agrego estos comentarios al proyecto para el beneficio de otros principiantes.
Hice algunas investigaciones recientemente sobre Artifactory 2 y Nexus 1.3. Aquí enumeraré 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 archivos almacenados FS se puede acceder directamente.
- Artifactory tiene mayores requisitos de sistema, especialmente para el espacio en disco.
- Artifactory tiene soporte LDAP, mientras que Nexus solo lo tiene en 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/
Hmmm ... mi experiencia con el artefacto es horrible ... pero soy relativamente novato, así que tómalo con un grano de sal. Mi queja general es que los archivos jar recientemente cargados en Artifactory no parecen indexarse de inmediato, como por horas, y no parece haber una buena manera de forzarlo. Intenté varias cosas que parecían haber funcionado, pero no fue así. He estado trabajando con m2eclipse, agregando dependencias a un proyecto que estoy convirtiendo de hormiga. Cuando intento agregar un jar que acabo de agregar a artifactory, espero que se muestre como una opción en el selector, pero no es así.
un compañero de trabajo me dijo que habían instalado un nexo y que hasta ahora les gusta ... pero aún no puedo responderlo. Estoy a punto de instalar eso en una caja de Linux tan pronto como la TI pueda encontrarme una.
No sé sobre Artifactory, pero aquí están mis razones para usar Nexus:
- Instalación simple muerta (y desde 1.2, actualización simple muerta, también)
- Muy buena interfaz de usuario web
- Fácil de mantener, casi sin gastos administrativos
- Le proporciona alimentadores RSS de artefactos y errores recientemente instalados
- 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 de la caja (no es necesario realizar hacks de WebDAV, etc.).
- es gratis
- Puede redirigir 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 está realmente el artefacto.
Si necesita las características "Pro" de cualquiera (por ejemplo, repositorio de etapas, promoción de artefactos, NuGet), entonces 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 el aumento de horas de servicio
- Nexus Pro
- usted paga por asiento , es decir, cuántos desarrolladores descargan artefactos
- el servicio de asistencia técnica es de lunes a viernes de 0800 a 2000 ET, no importa lo que pague
No importa cuántos usuarios tenga, Nexus Pro ofrece un servicio de soporte que es en general equivalente al "Paquete de valor de plata" de $ 7,450 / año de Artifactory.
$ 7,450 / año le comprarán aproximadamente 67 asientos Nexus Pro (1-50 a $ 108, el resto a $ 120).
Solo por precio y soporte, Nexus Pro tiene sentido hasta llegar a 67 usuarios, momento en el que Artifactory se convierte en la opción más económica.
Si está haciendo todo el apoyo interno; sin embargo, ese punto mágico es de aproximadamente 23 usuarios (la oferta de soporte más básico de Artifactory es de $ 2,750 / año).
Tanto Artifactory como Nexus tienen un conjunto de características más o menos similar, pero el soporte LDAP de Artifactory lo hace más atractivo con Nexus. Aunque Nexus también tiene soporte LDAP pero en versión paga :-(
Veo que el uso de Nexus está creciendo, mientras que el uso de Artifcatory se mantiene en general plano.
La imagen está tomada desde aquí http://blog.sonatype.com/2014/11/42000-nexus-repository-managers-and-growing/
También hay una comparación matricial http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix
Estoy seguro de que si solo hablas de almacenar binarios desde " mvn deploy
", a ambos les irá bien.
Usamos Artifactory muy extensamente con todas las actualizaciones en el camino. Muchos proyectos, numerosas instantáneas implementadas y repositorios externos a modo de proxy. No hay 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. Nada de eso nos ha pasado a nosotros. Además, Artifactory permite almacenar datos en un disco y solo usar un DB 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 compilació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 propietaria de Hudson (vea su webinar de Maven 3 ). EDITAR: Esto ya no es cierto a partir de 2017 Nexus ofrece un soporte mucho más grande para otras herramientas de compilación. Fin de la edición
Artifactory proporciona una increíble integración de Hudson, TeamCity y Bamboo , y Gradle / Ivy . Entonces, mientras que Nexus no le da nada una vez que sale de la "zona de confort" de Sonatype (Maven, m2eclipse), Artifactory adopta y colabora con todas las principales herramientas de compilación.
De hecho, poder desplegar artefactos de construcción desde Hudson, cuando el trabajo ha terminado, y no mediante " mvn deploy
" es una gran diferencia: el plugin Artifactory Hudson hace una implementación atómica de todos los artefactos a la vez , solo cuando termina un trabajo de construcción exitosamente. " mvn deploy
" se ejecuta después de cada módulo y puede implementar un conjunto parcial de artefactos si un trabajo de construcción falla en el medio. Desplegar desde Maven en la finalización del módulo y no desde un servidor de compilación al finalizar el trabajo realmente es algo malo de hacer.
Como ves, Artifactory piensa "fuera de la caja" mientras que Nexus piensa "dentro de la caja" y solo se preocupa por los artefactos de Maven y Maven.
Otra cosa que hace que Artifactory sea más accesible es su solución Artifactory Online basada en la nube . Por aproximadamente $ 80 por mes tiene su propia instancia de Artifactory, no necesita dedicarle ningún servidor.
Artifactory tiene una API REST simple y sencilla , no sé cómo funciona para Nexus. Editar Nexus también tiene una API REST que también puedes usar fácilmente.
En resumen, para el almacenamiento básico de los 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.