Nexus

En el artículo anterior, hablamos sobre la necesidad del uso de un repositorio corporativo. Nexus es un gestor de repositorios de la empresa Sonatype, los creadores de Maven. Hay una versión libre que está bastante bien y que es la que vamos a analizar a continuación.

Instalación de Nexus

Vamos a instalar Nexus como un war y a desplegarlo en un Tomcat.

1. En el siguiente post se explica como instalar apache tomcat en nuestro equipo.

2. Una vez que lo tengamos instalado, vamos a la página de descarga de sonatype Nexus y nos descargamos la versión War (War distribution) y lo guardamos en una carpeta en nuestro equipo.

3. Abrimos en War y editamos el archivo “WEB-INF/plexus.properties” para que apunte a una carpeta de nuestro equipo, por ejemplo, en Windows podría ser:

Ese será el directorio donde almacene todas las librerías o artefactos. Volvemos a comprimir el war y renombramos el archivo a nexus.war.

4. Desplegamos la aplicación en Tomcat y accedemos a Nexus en http://127.0.0.1:8080/nexus Pinchamos en el enlace de loging que aparece en la esquina superior derecha e introducimos como usuario y pasword (admin/admin123):

Página de inicio de Nexus

Página de inicio de Nexus

Configurando el proxy

Si es necesario en nuestra red, podemos configurar un Proxy por el que salga la aplicación. En el menú “Server>>Default http Proxy settings”, introducimos la ip del proxy y el password.

Repositorios

Pinchamos en el menú “Repositories”. Se mostrará una tabla con los repositorios definidos. En la parte superior, se mostrarán unos botones que nos permitirán añadir o eliminar repositorios. En la parte de la derecha, se muestran las urls que habría que configurar en nuestro pom.xml (o preferiblemente en el settings.xml) para conectar con cada repositorio:

Repositorios en Nexus

Repositorios en Nexus (pincha para agrandar)

La instalación de Nexus viene con unos cuantos repositorios por defecto. Hay cuatro tipos de repositorios:

Virtual Repository → Se utilizan para compatibilidad con versiones antiguas de Maven.

Hosted Repository → Almacén de librerías propias. Por defecto hay tres repositorios creados:

  • 3rd party – donde subiremos las librerías de terceros para que estén disponibles para toda la organización. Un ejemplo de esto, pueden ser las librerías jdbc de Oracle, que por temas de licencia, no están en ningún repositorio público, de modo que nos las bajaríamos manualmente y las subiríamos a nuestro repositorio.
  • Releases – donde almacenaremos las versiones liberadas o cerradas de nuestros proyectos.
  • Snapshots – donde subiremos las versiones en desarrollo de nuestros proyectos.

Proxy Repository → Es un enlace  o una conexión a un repositorio público. Por defecto vienen tres, el repositorio central de Maven, el de Apache y el de Codehaus.

Group Repository → Agrupa varios repositorios. Se puede definir un repositorio de este tipo que agrupe a todos los demás, de modo, que únicamente necesitaremos conectarnos a éste para tener acceso a todas las librerías. Por defecto viene uno definido, llamado “Public Repositories”. Si lo seleccionamos y pulsamos en la pestaña “Configuration” podemos añadir o eliminar repositorios:

Añadir repositorios al grupo

Añadir repositorios al grupo

Como se puede ver, en la parte de la derecha aparecen los repositorios disponibles y en la parte de la izquierda, los que están incluidos en el grupo. Pulsando en los botones, se pueden pasar al grupo, o retirarlos del grupo.

Volviendo a los repositorios, nada más desplegar Nexus, hay bajar los índices de los repositorios de tipo proxy, como por ejemplo el repositorio central de Maven. Seleccionamos este repositorio y en la pestaña de configuración, marcamos “Dowunload remote indexes” y salvamos. A continuación refrescamos los índices. Para forzar que descargue los índices, podemos pinchar con el botón derecho cada repositorio y ponerlos fuera de servicio, para de nuevo volver a ponerlos en servicio. Hay que dejar que “respire un poco” la aplicación, porque tarda un poquito en pillar los índices. En la pestaña “Mirrors”, es recomendable seleccionar uno para el repositorio central de Maven.

Subiendo librerías al repositorio “3rd party”

Como hemos comentado, éste es el lugar recomendado para subir librerías que no se encuentran en ningún repositorio público. Se pueden subir por línea de comandos desde Maven, de manera similar a como las subimos al repositorio local de usuario:

Pero quizás es más interesante y cómodo usar la aplicación de Nexus, que nos permite hacer esto de manera visual. Seleccionaremos el repositorio y pincharemos en la pestaña “Artifact Upload”. Una de las cosas interesantes que podemos hacer al subir un artefacto, es crear un pom.xml con el group id, artifact id, etc. y en el que además definamos las dependencias de dicho artefacto que queremos subir. De este modo, cuando nos bajemos esta librería Maven se descargará también las dependencias transitivas. Seguidamente, subiremos la librería, pulsaremos en “Add Artifact” y finalmente en “Auploads Artifacts”.

Subir artefactos a Nexus

Subir artefactos a Nexus

Definición de usuarios y roles

Se pueden definir privilegios sobre los repositorios (lectura, escritura). También se pueden definir roles, y asignarle privilegios a los roles. Finalmente también se pueden definir usuarios y asignarles los roles que se deseen. De este modo, se puede tener un control total sobre usuarios y niveles de acceso a los repositorios.

Vamos a crear un usuario a modo de ejemplo. Pulsamos en el menú “Users” y a continuación a “New Nexus user”. Indicamos un id, una dirección de correo, un password y seleccionamos en el desplegable al usuario como activo. En el apartado “Role Management” pulsamos el botón “add” para añadir los roles que nos interese, por ejemplo, control total en todos los repositorios:

Roles en Nexus

Roles en Nexus

De este modo, con ese usuario podremos conectarnos desde Maven y descargarnos librerías, hacer releases o snapshot, etc.

Algunas otras utilidades que ofrece Nexus

Nexus dispone de algunas utilidades que pueden ayudar a los desarrolladores a mantenerse informado de los cambios que se producen en el repositorio. En el menú “System Feeds”, se muestran una serie de enlaces de sindicación a los que nos podremos subscribir.

También dispone de un buscador, que nos permitirá encontrar artefactos en los repositorios definidos.

Se pueden definir tareas programadas como la actualización de índices, borrado de caché, etc. También se puede definir un servidor SMPT, para enviar correos a los desarrolladores de manera automática en caso de que falle una tarea programada.

Existe más utilidades. La propia aplicación dispone de una ayuda bastante completa para aprender a sacarle todo el jugo a la aplicación. Por otra parte, en la página de Sonatype, nos podemos descargar un manual bastante completo en pdf de la aplicación

Aquí termina este artículo. En el próximo artículo veremos como conectar Maven y Nexus, y como crear releases y snapshots.

Deja un comentario

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