Archiva vs Nexus

 

En su día nos instalamos un repositorio propio para nuestros jar, de forma que estuvieran accesibles para todos los desarrolladores. Para ello usamos archiva, y ha funcionado más o menos bien con sus cosillas. Hace además las veces de proxy con los repositorios de maven que hay por internet. De esta forma, cada desarrollador únicamente debe configurar maven para que busque los jars en el repositorio de archiva y es este el que se encarga de acceder a internet y buscarlos si es necesario.

No hace mucho descubrí que había otra herramienta similar llamada nexus. Como archiva nos hacía cosas raras de vez en cuando (no traía las cosas de los repositorios de internet, no sé muy bien si por culpa de archiva o de nuestra conexión a internet, que va con proxy autentificado. También dejaba ficheros tmp vacíos en el repositorio de vez en cuando). Así que hoy me he decidido a instalar nexus y probar.

La instalación sencilla, un zip que te bajas, desempaquetas y tienes los scripts necesarios de windows, linux, solaris… para instalar nexus como servicio y arrancarlo y pararlo. Eso sí, hay dos versiones, la gratis con menos posibilidades de autentificación/seguridad, y la de pago que tiene de todo. La gratis en principio tiene lo necesario: gestión de usuarios y permisos propia, funciones de proxy y repositorios propios.

La interface web mucho mejor que la de archiva. Bastante más bonita y agradable. Rápidamente me puse en ella a configurar nuestros repositorios, tanto los propios, como los repositorios que son proxy de los estándar de internet (que ya vienen configurados los de maven central, apache y codehaus).

Y vamos a las cosas que me han gustado y que me han decidido a intentar el cambio en serio:

  1. Es más estricto que archiva con los SNAPSHOTS y las releases. Archiva permite subir y bajar jars snapshots y no snapshots de repositorios snapshots y no snapshots indistintamente. Somos los desarrolladores los que tenemos que tener cuidado de dónde subimos los jar. Nexus es más estricto, si intentamos subir un jar no snapshot a un repositorio que hemos marcado como snapshot, protesta. Y al revés también.
  2. Permite programar tareas de mantenimiento periódicas y entre ellas, la que veo más útil en nuestro caso: permite que se limpien automáticamente las versiones snapshots más antiguas o indicar cuántos snapshots quieres como máximo por cada jar. En un entorno de desarrollo como el nuestro en el que Hudson genera y sube muchos snapshots gigantes todas las noches, una limpieza periódica se hace imprescindible.
  3. Cuando configuras un repositorio como proxy de uno externo, tienes más visibilidad de si tiene o no conexión con el repositorio externo, si se ha bajado algo de él y qué se ha bajado.

Para ser justos, estoy comparando una versión antigua de archiva, que instalé hace mucho, con la última de nexus. Es posible que las versiones más modernas de archiva hayan mejorado o permitan hacer estas cosas que digo que hace nexus.

Esta entrada ha sido publicada en archiva, nexus y etiquetada como , , . Guarda el enlace permanente.

10 respuestas a Archiva vs Nexus

  1. Jibarito dijo:

    Vaya, esta vez no he sido capaz de seguirte… no tengo ni idea de qué son los «snapshots». Pero me quedo con la idea general.

    Por cierto, me gusta esa costumbre tuya de «hacer justicia» en las comparaciones (me refiero al último párrafo.

  2. serxio dijo:

    Otra buena opción es Artifactory.

  3. Hola,

    Posiblemente tuvieras artefactos desplegados «a mano» en Archiva (porque no estaban en repositorios públicos), si es así y te quieres ahorrar repetir el trabajo en Nexus puedes seguir el mismo procedimiento que seguí yo en su día (http://amunizmartin.wordpress.com/2009/08/31/migracion-desde-apache-archiva-a-nexus)

    Espero que te sirva.

    un saludo.

  4. Chuidiang dijo:

    @Antonio Manuel Muñiz. Vaya, yo lo he hecho con una «chapuza». Nexus y archiva están instalados en la misma máquina y he hecho que el directorio donde guarda nexus los jar coinicida con el de el archiva. Me gusta más tu solución, la de hacer que nexus haga temporalmente de proxy de archiva.

    Se bueno.

  5. Chuidiang dijo:

    @jibarito. Maven considera que los jar pueden ser releases o snapshots. Si son releases, entiende que son jar fijos que no cambian y si ya tienes un jar con una versión concreta, maven no va a buscar actualizaciones de ese jar. Sin embargo, si el jar está marcado como snapshot, maven entiende que ese jar es de desarrollo y puede cambiar de un día para otro, así que aunque ya tengas uno, va a al repositorio a buscar si hay algún jar más moderno y te lo actualiza.

    Los repositorios de jar que manejan herramientas como archiva y nexus, marcan si el repositorio es para guardar snapshots o releases, de forma que los primeros adminten que subas el mismo jar una y otra vez y guarda la fecha en que se ha actualizado el jar. Los segundos teóricamente sólo se sube el jar de release una sola vez con un número de versión concreto.

    Nexus es más estricto que archiva en ese sentido. Si el repositorio está marcado como release, nexus no admite que subas ahí jar que son snapshots. Archiva sí lo permite.

    Se bueno.

  6. miguel-h dijo:

    Sí, Artifactory es mejor que los dos…

  7. Ariel dijo:

    Hola a todos. El artículo es interesante, gracias por compartir tu experiencia.

    Sin embargo creo estamos cometiendo un error con Artifactory. El link que posteaste sobre la comparativa entre Nexus y Artifactory es del blog de Sonatype (la empresa que desarrolla Nexus), es decir que se trata de un vendor blog el cual es totalmente subjetivo, por lo cual es obvio que la conclusión va a ser recomendar Nexus.

    De hecho, hay otro post interesante por parte de la gente de JFrog (los que desarrollan Artifactory) en el cual utilizan su derecho a réplica en un por demás enriquecedor debate. El post lo pueden encontrar en:

    http://blogs.jfrog.org/2009/01/contrasting-artifactory-and-nexus.html

    Como a nosotros lo único que nos interesa es que haya competencia y que recibamos productos cada vez mejores y gratis 🙂 encontré una matriz comparativa objetiva ya que está hosteada en el Confluence de Codehaus y todas las partes implicadas pueden modificarla y agregar items a su gusto. La pueden ver en:

    http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix

    En el proyecto en el que estoy trabajando ahora, hace meses que venimos utilizando Artifactory y estamos muy satisfechos. La interfaz web es de muy fácil uso, la versión gratuita tiene muchos features útiles, aunque vi que agregaron otros muy interesantes pero en la versión paga. Lo que más me gusta es la capacidad de búsqueda que tiene: No importa cuántos GB pese tu repositorio ni cuántos artifacts haya deployed en él, puedo hacer búsquedas como si fuera Google. De hecho Artifactory inclusive desempaqueta los jars e indexa los archivos de texto en éste (ej: pom.xml) para indexarlos.

  8. J. Cayetano dijo:

    Hola,

    Respecto al punto 1. no es del todo cierto, Archiva, cuando creas un repositorio, puedes definir cuál va a ser el uso del repositorio en cuando a incluir releases y/o snapshots, quejándose en caso contrario:
    http://archiva.apache.org/docs/1.1-SNAPSHOT/adminguide/repositories.html

    En el punto 2. también es posible ejecutar tareas periódicas (consumers) de limpieza y mantenimiento en Archiva:
    http://archiva.apache.org/docs/1.1-SNAPSHOT/adminguide/consumers.html

    El punto 3. no termino de entender a qué te refieres.

    Saludos

  9. Chuidiang dijo:

    Hola:
    Como comento, estaba comparando con una versión antigua de archiva y quizás no la tengo bien configurada o no he investigado bastante. El caso es que en la que tengo puedo subir snpashots y releases entremezclados.
    El punto 3 me refiero simplemente a que nexus muestra en la página principal un listado de repositorios, indicando si es proxy o local y en caso de ser proxy, en el mismo listado indica si hay conexión con el repositorio remoto o falla la misma.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.