前置条件:
本地jar包按照maven下载目录结构已和两个脚本在同级目录;
一、操作上传脚本jarimport.sh
#!/bin/bash
echo "get cuurnt path"
basePath=$(cd $(dirname $0);pwd)
echo $basePath
echo "get and check parameters"
while getopts ":r:u:p:" opt; do
case $opt in
r) REPO_URL="$OPTARG"
echo "$REPO_URL"
;;
u) USERNAME="$OPTARG"
echo "$USERNAME"
;;
p) PASSWORD="$OPTARG"
echo "$PASSWORD"
;;
esac
done
echo "import jars"
find . -type f -not -path './jarimport\.sh*' \
-not -path './callimport\.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}/{} ;
if [ $? -eq 0 ]; then
echo "successed ."
else
echo "failed , please check this script ."
exit 1
fi
二、上传入口脚本callimport.sh
#!/bin/bash
echo "get cuurnt path"
basePath=$(cd $(dirname $0);pwd)
echo $basePath
# 定义参数
USERNAME="admin"
PASSWORD="admin123"
echo "调用jar包批量上传脚本执行上传操作"
sh $basePath/jarimport.sh -u $USERNAME -p $PASSWORD -r $1
if [ $? -eq 0 ]; then
echo "successed ."
else
echo "failed , please check this script ."
exit 1
fi
三、执行上传
sh callimport.sh 需要推送的nexus库url
四、扩展集成Jenkins做半自动化上传
五、可继续将jar包源文件获取自动化及加入对jar包开源协议的人工判断,从而实现jar包私库的严格自动化管控......