Repositorios local y remotos
Maven gestiona dos tipos de repositorios de depedencias:
Repositorio local
Ubicación en disco local donde maven guarda las dependencias que se va descargando, para no tener que descargarlas cada vez. La estructura se corresponde con una carpeta por groupId (si éste tiene puntos, se creará una subcarpeta por cada elemento), una carpeta con el nombre del artifactId y, finalmente, una carpeta con la versión.
Dentro de la carpeta de la versión ya se encuentran los archivos de las dependencias descargadas. Por ejemplo, la siguiente dependencia en un pom.xml:
<dependency> <groupId>org.gvsig</groupId> <artifactId>org.gvsig.tools</artifactId> <version>2.0-SNAPSHOT</version> </dependency>
Estará ubicada, dentro de nuestro repositorio local de maven, en el path:
MAVEN_REPO/org/gvsig/org.gvsig.tools/2.0-SNAPSHOT/org.gvsig.tools-2.0-SNAPSHOT.jar
Los archivos que maven descarga en el repositorio local pueden ser de tipo:
- pom.xml: con la configuración y las dependencias de la propia dependencia. Así maven, de forma transitiva, se descargará todo el árbol de dependencias que necesitemos en un momento dado, sin tener que especificar las dependencias de una dependencia de nuestro proyecto.
- archivo .jar con clases compiladas.
- archivo .jar con el código fuente.
- archivo .jar con el javadoc.
- etc.
Cuando especificamos una dependencia en nuestro proyecto, maven se descarga por defecto sólo el archivo .jar con las clases compiladas. Podemos indicarle que se descargue también el jar con los fuentes y/o con el javadoc.
Repositorios remotos
Los repositorios remotos son servidores de dependencias a los que maven va a buscar cuando no encuentra una dependencia en nuestro repositorio local.
Se puede acceder a estos repositorios a través de protocolos habituales como: HTTP/S, FTP, SSH, etc.
El propio proyecto maven tiene un repositorio de dependencias, accesible por HTTP, que viene configurado por defecto. En nuestros archivos pom.xml podemos añadir otros repositorios externos, o bien de nuestro propio proyecto. Por ejemplo, en gvSIG se ha creado un repositorio propio, que se registra por defecto en los proyecto de gvSIG, además de los repositorios oficiales.
El repositorio de gvSIG está accesible actualmente por HTTP en modo lectura, y por SCP en modo escritura. En este repositorio se pueden encontrar principalmente los archivos generados por los propios proyectos de gvSIG, así como alguna dependencia externa que no está disponible en el repositorio oficial.