Objetivo: Documentar la configuracion de los repositorios Nexus corporativos y el archivo Maven
settings.xmlpara que cualquier miembro del equipo pueda compilar los servicios del ecosistema Nebula/Simappe correctamente.
Prerequisitos:
- Ambiente de desarrollo configurado segun la Guia de Setup Ambiente de Desarrollo.
- VPN Centrica conectada (solicitar configuracion al area de TI).
Nexus es el repositorio de artefactos privado de Centrica. Almacena las librerias internas del ecosistema Nebula/Simappe y actua como proxy de repositorios publicos (Maven Central, npm).
| Repositorio | URL | Uso |
|---|---|---|
| Backend (Maven) | https://nexus.centricasoluciones.com/repository/centrica/ |
Artefactos Java/Spring Boot — librerias, servicios, plugins |
| Frontend (npm) | https://nexus.centricasoluciones.com/repository/centrica-frontend/ |
Paquetes npm — librerias Angular, componentes UI |
Cada miembro del equipo accede a Nexus con un usuario asignado segun su rol. La contraseña debe solicitarse al arquitecto.
| Rol | Usuario |
|---|---|
| Lider Backend | liderbackend1 |
| Lider Frontend | liderfrontend1 |
| Senior Backend | seniorbackend1 |
| Senior Frontend | seniorfrontend1 |
| Semi-Senior | semisenior1 |
Nota: El usuario de Nexus corresponde al nombre del correo corporativo de cada desarrollador (parte antes del
@). La contraseña es asignada por el arquitecto.
A partir de Maven 3.8.1, los repositorios HTTP estan bloqueados por defecto por seguridad. Si el Nexus corporativo opera bajo HTTP, Maven rechaza las peticiones con el error:
Blocked mirror for repositories: [nexus-centrica (http://...)]
Solucion: Agregar una seccion <mirrors> con <blocked>false</blocked> en el settings.xml.
Nota: Si el Nexus opera bajo HTTPS (como es el caso actual con
https://nexus.centricasoluciones.com), esta seccion<mirrors>no es estrictamente necesaria pero se recomienda mantenerla como prevencion ante cambios de protocolo en la infraestructura.
Ubicacion: ~/.m2/settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0
https://maven.apache.org/xsd/settings-1.2.0.xsd">
<!-- Desbloquear HTTP para Nexus Centrica (Maven 3.8+) -->
<mirrors>
<mirror>
<id>nexus-centrica-mirror</id>
<mirrorOf>nexus-centrica</mirrorOf>
<url>https://nexus.centricasoluciones.com/repository/centrica/</url>
<blocked>false</blocked>
</mirror>
</mirrors>
<!-- Credenciales — reemplazar con usuario y contraseña asignados -->
<servers>
<server>
<id>nexus-centrica</id>
<username>TU_USUARIO</username>
<password>TU_PASSWORD</password>
</server>
<server>
<id>nexus-centrica-mirror</id>
<username>TU_USUARIO</username>
<password>TU_PASSWORD</password>
</server>
</servers>
<!-- Perfil con repositorio Nexus Backend -->
<profiles>
<profile>
<id>nexus-centrica</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>nexus-centrica</id>
<url>https://nexus.centricasoluciones.com/repository/centrica/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus-centrica</id>
<url>https://nexus.centricasoluciones.com/repository/centrica/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
</settings>
Importante: Reemplazar
TU_USUARIOyTU_PASSWORDcon las credenciales asignadas segun tu rol (ver seccion 1.2).
Para proyectos frontend que consumen paquetes del Nexus, configurar el registro npm:
npm config set @centrica:registry https://nexus.centricasoluciones.com/repository/centrica-frontend/
npm config set //nexus.centricasoluciones.com/repository/centrica-frontend/:_auth $(echo -n 'TU_USUARIO:TU_PASSWORD' | base64)
# Backend — verificar que Maven resuelve dependencias
cd ~/code/centrica/backend/nebula-models
mvn clean install -DskipTests -U
# Frontend — verificar acceso al registro npm
npm view @centrica/nebula-ui-kit --registry https://nexus.centricasoluciones.com/repository/centrica-frontend/
Los servicios Nebula dependen de librerias internas que deben estar instaladas en el repositorio local (~/.m2). El orden de compilacion es estricto por dependencias entre artefactos.
SimappeModel (3.0.0)
└── SimappeCommons (2.8.2)
nebula-models (0.0.2-SNAPSHOT)
├── nebula-commons (0.0.1-SNAPSHOT)
└── nebula-shared (0.0.1-SNAPSHOT)
Nota:
nebula-modelstambien depende deSimappeModel, por lo que SimappeModel siempre debe compilarse primero.
cd ~/code/centrica/backend
# 1. SimappeModel — sin dependencias internas
cd SimappeModel && mvn clean install -DskipTests -U && cd ..
# 2. SimappeCommons — depende de SimappeModel
cd simappecommons && mvn clean install -DskipTests -U && cd ..
# 3. Nebula Models — depende de SimappeModel
cd nebula-models && mvn clean install -DskipTests -U && cd ..
# 4. Nebula Commons — depende de Nebula Models
cd nebula-commons && mvn clean install -DskipTests -U && cd ..
# 5. Nebula Shared — depende de Nebula Models
cd nebula-shared && mvn clean install -DskipTests -U && cd ..
#!/bin/bash
# compile-libs.sh — Compilar librerias base en orden
set -e
BASE=~/code/centrica/backend
for lib in SimappeModel simappecommons nebula-models nebula-commons nebula-shared; do
echo "=========================================="
echo "Compilando: $lib"
echo "=========================================="
cd "$BASE/$lib"
mvn clean install -DskipTests -U
done
echo ""
echo "Todas las librerias compiladas exitosamente."
Tip: Guardar este script en
~/code/centrica/backend/compile-libs.shy ejecutar conbash compile-libs.shcada vez que se necesite recompilar todas las librerias base (por ejemplo, al configurar un equipo nuevo o despues de ungit pullque modifique librerias).
Blocked mirror for repositoriesCausa: Maven 3.8+ bloquea repositorios HTTP.
Solucion: Verificar que el settings.xml tiene la seccion <mirrors> con <blocked>false</blocked>.
Could not find artifact com.centrica.nebula:xxxCausa: La libreria no esta en el repositorio local (~/.m2) ni en Nexus.
Solucion: Compilar las librerias en el orden correcto (ver seccion 3). Si el artefacto es una version SNAPSHOT, asegurarse de que la version en el pom.xml del proyecto consumidor coincida con la version real de la libreria.
EAI_AGAIN o ETIMEDOUT al descargar dependenciasCausa: La VPN esta capturando todo el trafico de internet (falta split tunnel).
Solucion: Contactar al area de TI para configurar split tunnel en la VPN. Solo el trafico a redes internas de Centrica debe pasar por el tunel VPN.
EACCES al instalar paquetes npm globalesCausa: Permisos insuficientes en /usr/lib/node_modules.
Solucion: Usar sudo npm i -g <paquete>.
401 Unauthorized al descargar de NexusCausa: Credenciales incorrectas o expiradas en settings.xml.
Solucion: Verificar que el <username> y <password> en la seccion <servers> correspondan a las credenciales vigentes asignadas por el arquitecto.
Autor: Carlos Torres — arquitecto.centrica@centricasoluciones.com
Proyecto: Nebula ERP — Centrica Soluciones