#!/bin/bash set -euo pipefail SEARCH_DIR="/app/.m2" NEXUS_URL="https://artifacts.tn.tngrp.ru/repository/sed-maven/" REPO_ID="nexus-repo" SETTINGS_FILE="/root/.m2/settings.xml" echo "=== Начинаем рекурсивную загрузку артефактов в Nexus ===" echo "Поиск JAR-файлов в ${SEARCH_DIR} ..." echo "=========================================" if [[ ! -d "$SEARCH_DIR" ]]; then echo "Ошибка: Директория $SEARCH_DIR не существует!" exit 1 fi # Поиск файлов без массивной обёртки jar_files=$(find "$SEARCH_DIR" -type f -name "*.jar" ! -name "*-sources.jar" ! -name "*-javadoc.jar" 2>/dev/null || true) if [[ -z "$jar_files" ]]; then echo "JAR-файлы не найдены в $SEARCH_DIR" exit 1 fi # Точный подсчет строк без фантомной пустой строки total_files=$(echo "$jar_files" | grep -c '^') echo "Найдено JAR-файлов: $total_files" echo "=========================================" deploy_artifact() { local jar_file="$1" local pom_file="${jar_file%.jar}.pom" echo "Обработка: $jar_file" if [[ -f "$pom_file" ]]; then echo "Найден POM: $pom_file" echo "Загружаем..." # Перехватываем статус выполнения, чтобы set -e не гасил скрипт при ошибке Nexus if mvn deploy:deploy-file \ -s "$SETTINGS_FILE" \ -Dfile="$jar_file" \ -DpomFile="$pom_file" \ -DrepositoryId="$REPO_ID" \ -Durl="$NEXUS_URL" \ -Dpackaging=jar \ -DgeneratePom=false \ -DupdateReleaseInfo=true; then echo "Успешно загружен: $(basename "$jar_file")" else echo "ОШИБКА загрузки для $(basename "$jar_file")" fi echo "---" else echo "POM-файл не найден для $jar_file" echo "Искали: $pom_file" echo "Пропускаем." echo "---" fi } counter=0 for jar_file in $jar_files; do counter=$((counter + 1)) echo "[$counter/$total_files]" deploy_artifact "$jar_file" done echo "Все артефакты обработаны. Загружено/обработано: $counter из $total_files"