{"id":80,"date":"2025-11-10T16:08:36","date_gmt":"2025-11-10T14:08:36","guid":{"rendered":"https:\/\/xavs.cat\/?p=80"},"modified":"2025-11-10T16:08:36","modified_gmt":"2025-11-10T14:08:36","slug":"puja-artefactes-a-nexus","status":"publish","type":"post","link":"https:\/\/xavs.cat\/?p=80","title":{"rendered":"Puja artefactes a Nexus"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n# ============================================================\n# Pujar artefactes Maven a Nexus 3 utilitzant la API REST\n# ============================================================\n\nURL_NEXUS=\"https:\/\/xxxxx.xxxxx.xx\"\nREPO_DESTI=\"maven-releases\"\nUSUARI=\"admin\"\nTOKEN=\"xx-x-xx-x\"\nCARPETA_BASE=\"\/data\/nexus\"\n\n# ------------------------------------------------------------\n# Depend\u00e8ncia: jq\n# ------------------------------------------------------------\nif ! command -v jq &amp;>\/dev\/null; then\n  echo \"\u274c Necessites instal\u00b7lar jq (sudo apt install jq)\"\n  exit 1\nfi\n\n# ------------------------------------------------------------\n# Funci\u00f3 per pujar un artefacte Maven (jar\/pom) amb els metadades\n# ------------------------------------------------------------\npujar_artefacte() {\n  local grupId=\"$1\"\n  local artefacteId=\"$2\"\n  local versio=\"$3\"\n  local fitxer=\"$4\"\n\n  EXT=\"${fitxer##*.}\"\n\n  echo \"\u2b06\ufe0f  Pujant: ${grupId}:${artefacteId}:${versio} \u2192 $(basename \"$fitxer\")\"\n\n  curl -s -u \"$USUARI:$TOKEN\" \\\n    -X POST \"$URL_NEXUS\/service\/rest\/v1\/components?repository=$REPO_DESTI\" \\\n    -F \"maven2.groupId=$grupId\" \\\n    -F \"maven2.artifactId=$artefacteId\" \\\n    -F \"maven2.version=$versio\" \\\n    -F \"maven2.asset1=@$fitxer\" \\\n    -F \"maven2.asset1.extension=$EXT\" \\\n    >\/dev\/null\n\n  if &#91; $? -eq 0 ]; then\n    echo \"\u2705 Pujat: $artefacteId-$versio.$EXT\"\n  else\n    echo \"\u26a0\ufe0f  Error al pujar $fitxer\"\n  fi\n}\n\n# ------------------------------------------------------------\n# Recorrem tots els artefactes descarregats\n# Estructura esperada: grup\/artefacte\/versio\/*.*\n# ------------------------------------------------------------\ncd \"$CARPETA_BASE\" || exit 1\n\necho \"\ud83d\ude80 Pujant artefactes des de $CARPETA_BASE al repositori $REPO_DESTI ...\"\n\nfind . -type f \\( -name \"*.jar\" -o -name \"*.pom\" -o -name \"*.war\" -o -name \"*.zip\" \\) | while read -r fitxer; do\n  REL_PATH=\"${fitxer#.\/}\"                   # treure prefix \".\/\"\n  DIR_PATH=$(dirname \"$REL_PATH\")           # ex: acegisecurity\/acegi-security\/0.9.0\n  grupId=$(echo \"$DIR_PATH\" | cut -d\/ -f1 | tr '\/' '.')\n  artefacteId=$(echo \"$DIR_PATH\" | cut -d\/ -f2)\n  versio=$(echo \"$DIR_PATH\" | cut -d\/ -f3)\n\n  # comprovem que existeix tot\n  if &#91; -n \"$grupId\" ] &amp;&amp; &#91; -n \"$artefacteId\" ] &amp;&amp; &#91; -n \"$versio\" ]; then\n    pujar_artefacte \"$grupId\" \"$artefacteId\" \"$versio\" \"$fitxer\"\n  else\n    echo \"\u26a0\ufe0f  No s'ha pogut determinar GAV per: $fitxer\"\n  fi\ndone\n\necho \"\ud83c\udfaf Proc\u00e9s completat.\"\n\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[27,28],"class_list":["post-80","post","type-post","status-publish","format-standard","hentry","category-general","tag-maven","tag-nexus"],"_links":{"self":[{"href":"https:\/\/xavs.cat\/index.php?rest_route=\/wp\/v2\/posts\/80","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xavs.cat\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xavs.cat\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xavs.cat\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/xavs.cat\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=80"}],"version-history":[{"count":1,"href":"https:\/\/xavs.cat\/index.php?rest_route=\/wp\/v2\/posts\/80\/revisions"}],"predecessor-version":[{"id":81,"href":"https:\/\/xavs.cat\/index.php?rest_route=\/wp\/v2\/posts\/80\/revisions\/81"}],"wp:attachment":[{"href":"https:\/\/xavs.cat\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=80"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xavs.cat\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=80"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xavs.cat\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=80"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}