Instalación de un repositorio privado
Este artículo explica cómo configurar rápidamente un repositorio Maven privado usando Docker.
Crea el archivo docker-compose.yaml con el siguiente contenido:
version: '2'
services:
repo:
image: sonatype/nexus3:3.72.0
container_name: repo
restart: always
ports:
- '8081:8081'
volumes:
- '/data/opt/repo/data:/nexus-data'
Para evitar problemas de permisos en el directorio del host, es necesario ajustar los permisos del directorio /data/opt/repo/data (por ejemplo, ejecutar chmod -R 777 /data/opt/repo/data).
Ejecuta docker-compose up para iniciar el contenedor. Luego, accede al navegador mediante la dirección http://IP_de_la_máquina_huésped:8081. Haz clic en el botón 【Sign In】 en la parte superior derecha para ver la ventana de inicio de sesión:
El usuario predeterminado es admin y la contraseña se encuentra en el archivo /nexus-data/admin.password. Puedes revisarlo en el directorio montado /data/opt/repo/data.
$ ls -al /data/opt/repo/data/
total 80
drwxrwxrwx 14 root root 4096 Sep 13 09:36 .
drwxr-xr-x 3 root root 4096 Sep 13 09:34 ..
-rw-r--r-- 1 200 200 36 Sep 13 09:36 admin.password # este es el archivo con la contraseña por defecto
drwxr-xr-x 3 200 200 4096 Sep 12 21:44 blobs
drwxr-xr-x 347 200 200 12288 Sep 13 09:35 cache
drwxr-xr-x 2 200 200 4096 Sep 12 21:43 db
drwxr-xr-x 3 200 200 4096 Sep 12 21:44 elasticsearch
drwxr-xr-x 3 200 200 4096 Sep 12 21:43 etc
drwxr-xr-x 2 200 200 4096 Sep 12 21:43 generated-bundles
drwxr-xr-x 2 200 200 4096 Sep 12 21:43 instances
drwxr-xr-x 3 200 200 4096 Sep 12 21:43 javaprefs
-rw-r--r-- 1 200 200 1 Sep 13 09:35 karaf.pid
drwxr-xr-x 3 200 200 4096 Sep 12 21:44 keystores
-rw-r--r-- 1 200 200 14 Sep 13 09:35 lock
drwxr-xr-x 5 200 200 4096 Sep 22 15:39 log
-rw-r--r-- 1 200 200 5 Sep 13 09:35 port
drwxr-xr-x 2 200 200 4096 Sep 12 21:43 restore-from-backup
drwxr-xr-x 8 200 200 4096 Sep 13 09:36 tmp
Una vez que inicies sesión correctamente, Nexus requerirá cambiar la contraseña del usuario admin y configurar los permisos básicos. Después de esto, podrás acceder a la interfaz de administración del repositorio privado.
En la interfaz de configuración, hay algunos ajustes necesarios:
Configurar el repositorio central
Para mejorar el rendimiento, modifica la URL del repositorio central en la configuración del servidor para usar el proxy de Aliyun: http://maven.aliyun.com/repository/central.
Crear un repositorio tipo hosted
Un repositorio hosted se usa para almacenar componentes personalizados. Ve a Create repository, selecciona maven2(hosted), ingresa un nombre y establece Version policy como Release. Elige Allow redeploy en Deployment policy para permitir actualizaciones.
Repite el proceso para crear otro repositorio tipo snapshot.
Añadir roles
Nexus tiene roles predeterminados, pero normalmente se crea uno nuevo para los desarrolladores. Accede a Create Role, define el Role ID como developer y otorga solo permisos para usar el repositorio.
Añadir usuarios
Crea un usuario local con los permisos adecuados. Asigna el rol recién creado y guarda los cambios.
Configurar grupos de repositorios
Los grupos de repositorios permiten agrupar múltiples repositorios. Usa el grupo maven-public y agrega tus repositorios private-release y private-snapshot a la lista de miembros, colocándolos al principio para asegurar que se busquen primero.
Uso del repositorio privado
Después de configurar el repositorio, es hora de ajustar la configuración de Maven local.
Configuración de credenciales
Agrega las credenciales en el archivo settings.xml dentro de la etiqueta servers:
<servers>
<!-- Autenticación para descargas -->
<server>
<id>test</id>
<username>user_name</username>
<password>user_pass</password>
</server>
</servers>
Configuración de repositorios
En mirrors, establece el repositorio privado como el destino:
<mirrors>
<!-- Usar el repositorio privado -->
<mirror>
<id>central</id>
<mirrorOf>*</mirrorOf>
<name>Repositorio Central</name>
<url>http://192.168.13.29:8081/repository/maven-public/</url>
</mirror>
<!-- Comentar el repositorio de Aliyun -->
<!--
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
-->
</mirrors>
Publicación de proyectos locales en el repositorio
Configuración de Maven
En settings.xml, configura las credenciales para subir archivos:
<servers>
<!-- Autenticación para descargas -->
<server>
<id>test</id>
<username>user_name</username>
<password>user_pass</password>
</server>
<!-- Autenticación para publicación -->
<server>
<id>private-release</id>
<username>user_name</username>
<password>user_pass</password>
</server>
<!-- Autenticación para publicación -->
<server>
<id>private-snapshot</id>
<username>user_name</username>
<password>user_pass</password>
</server>
</servers>
Agrega el siguiente bloque en profiles:
<profiles>
<profile>
<id>dev</id>
<repositories>
<repository>
<id>private-release</id>
<url>http://192.168.13.29:8081/repository/private-release/</url>
</repository>
<repository>
<id>private-snapshot</id>
<url>http://192.168.13.29:8081/repository/private-snapshot/</url>
</repository>
</repositories>
</profile>
</profiles>
Configuración del proyecto
En el archivo pom.xml, incluye lo siguiente:
<!-- Especificar el nombre del repositorio -->
<distributionManagement>
<repository>
<id>private-release</id>
<url>http://192.168.13.29:8081/repository/private-release/</url>
</repository>
<snapshotRepository>
<id>private-snapshot</id>
<url>http://192.168.13.29:8081/repository/private-snapshot/</url>
</snapshotRepository>
</distributionManagement>
<build>
<pluginManagement>
<plugins>
<!-- Plugin para publicar JAR -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
</plugin>
<!-- Plugin para publicar código fuente -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
Finalmente, en tu IDE, haz clic en el botón deploy para completar la publicación.
【Referencia】 Guía completa sobre la instalación y uso de un repositorio Maven privado Tutorial detallado para configurar un repositorio Maven privado