windows上 Nexus 批量上传 maven依赖/npm依赖
前言:windows系统上要有git环境,不然sh文件执行不了
1.批量上传maven依赖
设置脚本,把脚本放在依赖包的根目录执行,脚本名为upload.sh
#!/bin/bash
# 定义变量
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 './upload\.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}/{} ;
执行命令
upload.sh -u 账号 -p 密码 -r url
2.批量上传npm依赖
1.打开浏览器登录Nexus,确定你需要上传到的目标 repository 名称。
2、在API菜单中获取上传包的API,如下图所示:
这段 curl 命令,我们在脚本中使用,原理即循环所有 tgz 文件循环调用 api 接口进行上传。
脚本内容
#!/bin/bash
# 获取命令行参数
while getopts ":r:u:p:" opt; do
case $opt in
r) REPO_URL="$OPTARG"
;;
u) USERNAME="$OPTARG"
;;
p) PASSWORD="$OPTARG"
;;
esac
done
# find 并批量上传
find . -type f -name '*.tgz' | sed "s|^\./||" | xargs -I '{}' \
curl -u "$USERNAME:$PASSWORD" -X 'POST' -v \
${REPO_URL} \
-H 'accept: application/json' \
-H 'Content-Type: multipart/form-data' \
-F 'npm.asset=@{};type=application/x-compressed' ;
将脚本 npmimport.sh 放在所有 tgz 文件所在目录中(所有tgz在同一个文件夹中),然后cmd到当前目录下执行命令
npmimport.sh -u admin -p 123456 -r http://nexus.demo.com/service/rest/v1/components?repository=npm-shanhy