#!/bin/bash
# ============================================================
# Pujar artefactes Maven a Nexus 3 utilitzant la API REST
# ============================================================
URL_NEXUS="https://xxxxx.xxxxx.xx"
REPO_DESTI="maven-releases"
USUARI="admin"
TOKEN="xx-x-xx-x"
CARPETA_BASE="/data/nexus"
# ------------------------------------------------------------
# Dependència: jq
# ------------------------------------------------------------
if ! command -v jq &>/dev/null; then
echo "❌ Necessites instal·lar jq (sudo apt install jq)"
exit 1
fi
# ------------------------------------------------------------
# Funció per pujar un artefacte Maven (jar/pom) amb els metadades
# ------------------------------------------------------------
pujar_artefacte() {
local grupId="$1"
local artefacteId="$2"
local versio="$3"
local fitxer="$4"
EXT="${fitxer##*.}"
echo "⬆️ Pujant: ${grupId}:${artefacteId}:${versio} → $(basename "$fitxer")"
curl -s -u "$USUARI:$TOKEN" \
-X POST "$URL_NEXUS/service/rest/v1/components?repository=$REPO_DESTI" \
-F "maven2.groupId=$grupId" \
-F "maven2.artifactId=$artefacteId" \
-F "maven2.version=$versio" \
-F "maven2.asset1=@$fitxer" \
-F "maven2.asset1.extension=$EXT" \
>/dev/null
if [ $? -eq 0 ]; then
echo "✅ Pujat: $artefacteId-$versio.$EXT"
else
echo "⚠️ Error al pujar $fitxer"
fi
}
# ------------------------------------------------------------
# Recorrem tots els artefactes descarregats
# Estructura esperada: grup/artefacte/versio/*.*
# ------------------------------------------------------------
cd "$CARPETA_BASE" || exit 1
echo "🚀 Pujant artefactes des de $CARPETA_BASE al repositori $REPO_DESTI ..."
find . -type f \( -name "*.jar" -o -name "*.pom" -o -name "*.war" -o -name "*.zip" \) | while read -r fitxer; do
REL_PATH="${fitxer#./}" # treure prefix "./"
DIR_PATH=$(dirname "$REL_PATH") # ex: acegisecurity/acegi-security/0.9.0
grupId=$(echo "$DIR_PATH" | cut -d/ -f1 | tr '/' '.')
artefacteId=$(echo "$DIR_PATH" | cut -d/ -f2)
versio=$(echo "$DIR_PATH" | cut -d/ -f3)
# comprovem que existeix tot
if [ -n "$grupId" ] && [ -n "$artefacteId" ] && [ -n "$versio" ]; then
pujar_artefacte "$grupId" "$artefacteId" "$versio" "$fitxer"
else
echo "⚠️ No s'ha pogut determinar GAV per: $fitxer"
fi
done
echo "🎯 Procés completat."