Nexus Maven仓库迁移
Nexus Maven库迁移是开发环境迁移的重要一环,很多教程通过直接复制Nexus目录方式实现,但容器化部署Nexus时这种方式比较复杂,尤其是在公司容器平台部署的Nexus无法获取底层权限。
搜集到网上有通过shell脚本方式将Maven仓库文件一个个传到Nexus里仓库的方案,简单记录如下:
#!/bin/bash # copy and run this script to the root of the repository directory containing files # this script attempts to exclude uploading itself explicitly so the script name is important # Get command line params while getopts ":r:u:p:" opt; do case $opt in r) REPO_URL="$OPTARG" ;; u) USERNAME="$OPTARG" ;; p) PASSWORD="$OPTARG" ;; esac done find . -type f -not -path './mavenimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;
3.赋予执行权限
chmod +x mavenimport.sh
4.执行,-u 用户名 -p 密码 -r 仓库地址
./mavenimport.sh -u admin -p 123 -r http://192.168.60.133:8081/repository/my_repo/
拓展:从Nexus某个仓库拉取所有依赖包到本地,并创建存放目录
#!/bin/bash
# 按需修改nexusurl和repository,修改要创建并存放依赖的本地目录名称 nexusurl=http://ip:port repository=repository_name continuationToken="" dir=proxy
mkdir $dir cd $dir fetchComponents() { local token="$1" # 构建CURL命令 local curlCmd="curl -s -X GET \"$nexusurl/service/rest/v1/components?repository=$repository" if [[ "$token" != "" ]]; then curlCmd="$curlCmd&continuationToken=$token" fi curlCmd="$curlCmd\" -H 'accept: application/json' -H 'NX-ANTI-CSRF-TOKEN: 0.028119600179752124' -H 'X-Nexus-UI: true'" # 执行请求 local response=$(eval "$curlCmd") # 提取新continuationToken和组件信息 local newContinuationToken=$(echo "$response" | jq -r '.continuationToken // empty') local components=$(echo "$response" | jq -r '.items[] | {group, name, version, path: .assets[].path}') # 输出组件信息并保存到文件(可按需调整输出方式) echo "$components" >> components_info.json # 如果有新的continuationToken,则递归调用 if [[ "$newContinuationToken" != "" ]]; then echo "Fetching next page with continuationToken: $newContinuationToken" fetchComponents "$newContinuationToken" else echo "All components fetched." fi } # 初始化调用 fetchComponents "$continuationToken" echo "All component data has been collected. Check components_info.json for details." cat components_info.json | grep path | awk -F ':' '{print $2}' | cut -d "\"" -f 2 | sort | uniq > path1.txt cat path1.txt | awk -F'/[^/]*$' '{print $1}' | sort | uniq > path2.txt while IFS= read -r DIRNAME; do echo $DIRNAME if [ ! -d $DIRNAME ]; then mkdir -p $dir$DIRNAME fi done < path2.txt while IFS= read -r DIRNAME; do echo $DIRNAME DOWNLOAD_URL="$nexusurl/repository/$repository/$DIRNAME" if [ ! -f $DIRNAME ]; then wget $DOWNLOAD_URL -O $dir$DIRNAME fi done < path1.txt rm components_info.json rm path2.txt rm path1.txt
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)