Tipos de repositorios en Maven
El ecosistema de Maven se basa en tres categorías principales:
- Repositorio local: ubicado en la máquina del desarrollador, almacena las dependencias descargadas.
- Repositorio central: mantenido por Apache Maven, contiene miles de librerías públicas.
- Servidor privado (Nexus): repositorio interno donde se publican artefactos propios y que actúa como caché intermedio frente al repositorio central.
Cuando un artefacto no existe en el servidor privado, Nexus lo descarga automáticamente del repositorio central.
Instalación y puesta en marcha de Nexus
Para desplegar Nexus en un entorno local, siga los siguientes pasos:
- Descargue Nexus Repository Manager OSS desde el sitio oficial de Sonatype.
- Descomprima el archivo y acceda al directorio
bin. - Abra una terminal con privilegios de administrador y ejecute
nexus.bat installpara registrar el servicio. - Inicie el servicio mediante
nexus.bat starto desde el administrador de servicios de Windows. - Consulte el puerto en el archivo
nexus.propertiesy acceda ahttp://localhost:8081/nexus.
Las credenciales predeterminadas son admin / admin123. Tras iniciar sesión, el apartado Repositories muestra los almacenes configurados por defecto.
Categorías de almacenes en Nexus
Nexus organiza sus almacenes en cuatro grupos funcionales:
- Hosted: repositorios propios donde se publican artefactos internos. Suelen dividirse en versiones estables y versiones de desarrollo.
- Proxy: replican repositorios remotos como el central de Maven, descargando artefactos bajo demanda.
- Group: agrupan varios repositorios (hosted y proxy) bajo una única URL, simplificando la configuración de los clientes Maven.
- Virtual: mantiene compatibilidad con artefactos del formato Maven 1.
Publicación de artefactos en el servidor privado
Para subir un proyecto Maven al servidor privado se requiere configurar las credenciales en settings.xml, definir el destino en el pom.xml del proyecto y ejecutar el despliegue.
1. Credenciales en settings.xml
Añada los siguientes elementos dentro de servers:
<server>
<id>repo-stable</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>repo-dev</id>
<username>admin</username>
<password>admin123</password>
</server>
Es importante que el IDE esté usando el mismo archivo settings.xml donde se añaden estas credenciales.
2. Destino de despliegue en pom.xml
En el proyecto que se desea publicar, incluya la siguiente sección:
<distributionManagement>
<repository>
<id>repo-stable</id>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>repo-dev</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
El identificador id debe coincidir con el definido en settings.xml.
3. Ejecución del despliegue
Ejecute el siguiente comando:
mvn deploy
La versión indicada en el pom.xml determina si el artefacto se almacena en el repositorio de versiones estables o en el de desarrollo. Si termina en -SNAPSHOT, se dirigirá al segundo.
Descarga de artefactos desde el servidor privado
Para consumir dependencias alojadas en Nexus, configure un perfil en settings.xml y actívelo.
1. Perfil de descarga
<profile>
<id>enterprise</id>
<repositories>
<repository>
<id>internal-nexus</id>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>plugins-internal</id>
<name>Public Repositories</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
2. Activación del perfil
<activeProfiles>
<activeProfile>enterprise</activeProfile>
</activeProfiles>
3. Uso en el proyecto
Una vez activado el perfil, declare las dependencias en el pom.xml del proyecto. Maven buscará primero en el repositorio local; si no encuentra el artefacto, lo solicitará al servidor privado y, de ser necesario, lo descargará del repositorio central. Después de la primera descarga, el artefacto quedará disponible tanto en el servidor privado como en el repositorio local.