Repositorios

Ya hemos hablado anteriormente de los repositorios. Cuando usamos Maven, tenemos un repositorio en nuestro equipo, el repositorio local. Este repositorio se encuentra por defecto en la carpeta “.m2” del directorio de usuario.

  • $HOME/.m2 → en unix/linux
  • C:/Documents and Settings/{nombre-usuario}/.m2 → en windows
  • ~/.m2 → en Mac

Es recomendable, cambiar en Windows el repositorio de usuario y ponerlo en una carpeta en cuya ruta no existan espacios, ya que hay algunos plugins que dan problemas. Para cambiar la ubicación se cambia la ubicación por defecto en el settings.xml.

En el repositorio se descargan las librerías o arquetipos que vamos usando en los distintos proyectos. Dichas librerías se descargan del repositorio central de Maven, pero ¿qué ocurre si necesitamos una librería que no se encuentra en dicho repositorio? Bueno, en ese caso tenemos dos opciones, o conectarnos al repositorio que contenga la librería, o descargarnos la librería y subirla al repositorio local.

Opción 1: Conectarnos a otros repositorios

Podemos introducir la configuración en el pom.xml, o en el settings.xml. Por ejemplo, para añadir el repositorio de Spark, podemos introducir en el pom lo siguiente:

Desde eclipse, podemos ver los repositorios que tenemos accediendo a “Window>>Show View>>Other…” y seleccionamos “Maven Repositories”

Mostrar repositorios en Eclipse

Mostrar repositorios en Eclipse

Al pulsar en “Ok”, se mostrará la vista con los repositorios que utilizamos:

Repositorios Maven en Eclipse

Repositorios Maven en Eclipse

Como se puede ver, se muestran los repositorios locales, en realidad únicamente hay un repositorio local, que es la carpeta “.m2”, solo que Eclipse pone aquí los proyectos que tenemos en el workespace. Como repositorios globales, vemos el repositorio central de Maven. Si configuramos un mirror del repositorio central se mostrará aquí. A continuación se muestran los repositorios del proyecto, donde aparece el que acabamos de añadir. De este modo, ya podemos añadir la dependencia a la librería Spark en el pom.xml y nos la descargará:

Para añadir el repositorio en el settings.xml hay que hacerlo a través de un perfil, que debemos dejar activo:

Opción 2: Descargar el jar y añadirlo al repositorio local

Supongamos que queremos usar el driver JDBC de Oracle, que debido a las restricciones de su licencia, no se encuentra en ningún repositorio público. Lo que podemos hacer es descargar la librería de la página de Oracle.

Seguidamente ejecutaremos el siguiente comando que subirá la librería a nuestro repositorio local:

Y hecho, el jar estará instalado en nuestro repositorio local y ya podremos añadir la dependencia en el pom.xml de cualquiera de nuestros proyectos:

El repositorio corporativo

Es muy raro que un desarrollador programe sólo, lo normal será que esté integrado en un equipo de desarrollo o en una organización, donde trabajará en distintos proyectos y participará en aplicaciones que hayan programado otros desarrolladores.

Si los desarrolladores únicamente usan su repositorio local (.m2) y los distintos repositorios remotos a los que se conecten, puede que cuando compartan los proyectos, estos no compilen. En la siguiente imagen ilustramos un ejemplo de esto:

El problema de trabajar sin repositorio corporativo (pincha para agrandar)

El problema de trabajar sin repositorio corporativo (pinchar para agrandar)

En la imagen se muestra, como el “Desarrollador 1” ha implementado una aplicación que necesita 4 librerías. Dos de estas librerías se encuentran en el repositorio central de Maven, otra librería la ha conseguido conectándose a un repositorio remoto y finalmente la última librería se la ha descargado de internet y la ha subido manualmente a su repositorio local (.m2). Sube el proyecto al sistema de control de versiones de la organización (Svn, o el que sea), para que otros programadores puedan trabajar con el proyecto. Como hemos comentado antes, una de las ventajas de Maven, es que no se versionan la librerías, el pom.xml ya especifica que librerias necesita.

El “Desarrollador 2” descarga el proyecto del svn, y al hacer esto, Maven intentará descargarse las librerías que necesita. Las dos librerías que se encuentran en el repositorio centralizado las obtiene sin problemas, pero las otras dos librerías no las encuentra y el proyecto no compila.

Para sacarle el jugo a Maven es necesario disponer de un repositorio centralizado, también llamado, repositorio corporativo. Dicho repositorio cumplirá los siguientes objetivos:

  • Almacenará las librerías propias de la organización, de manera que se puedan crear fácilmente dependencias a otros proyectos internos. Contendrá tanto artefactos en desarrollo (snapshot), como versiones liberadas (releases).
  • Almacenará las librerías que necesitemos y que hayamos descargado de manera manual.
  • Servirá de proxy a otros repositorios. Los desarrolladores únicamente se conectan al repositorio corporativo, y es dicho repositorio el que centraliza las conexiones a otros repositorios remotos.
  • Proporciona herramientas de control de acceso, gestión de usuarios, envío de correos, etc, que ayudan a definir y coordinar los equipos de desarrollo.

El objetivo que hay que conseguir (según mi opinión) en una organización es el siguiente:

Repositorio centralizado

Repositorio centralizado (pinchar para agrandar)

Toda aplicación que se desarrolle en la organización debería de compilar dentro de la red interna, esto es, descargar del sistema de control de versiones y listo.

Existen varias soluciones en lo que concierne a la gestión de repositorios, los más importantes, que podemos utilizar para crear nuestro repositorio corporativo o centralizado, son:

Buceando por internet, parece que el que mejores prestaciones ofrece a día de hoy, es éste último, así que vamos a analizar este gestor estupendo de repositorios:  Nexus

3 comentarios:

  1. en donde ejecuto mvn install:install-file -Dfile={Path/al/fichero/ojdbc.jar} -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

    • Tienes que lanzar el comando desde el terminal de linux o la consola de windows, claro… Si tienes maven instalado y las variables de entorno correstamente configuradas, no tendrás problema.
      Un saludo

    • Tienes que situar la consola o win-cmd en el directorio del proyecto, el que contiene el archivo POM.xml padre, y ahí ejecutar los comandos que te han
      comentado

Deja un comentario

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