脚本内容,将以下内容保存为mavenimport.sh,放置于需要上传的根目录下,示例:C:\Users\63267.m2\repository
若私服已有待上传的包,则执行会被替换
#!/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}/{} ;
执行脚本:
./mavenimport.sh -u admin -p admin123456 -r http://192.168.1.88:8081/repository/maven-releases/
问题:
1.脚本要放在repository的根目录,其它目录会导致jar包路径有问题
2.解决“/bin/bash^M: bad interpreter: No such file or directory”报错
1、vim编辑脚本文件
2、进入vim编辑模式:set ff=unix,wq保存退出。
3、查看修改格式后的脚本文件格式。
4、执行脚本,不在报错,正常执行。
3.以上内容若在windows系统上执行需安装git.exe,右键点击Git bash here再执行脚本。注意这种方法不可行,有的jar包会漏传,不建议使用!
4.快照包和release包要分别上传,上传命令指定的仓库也要不同,另外快照包目录下偶尔也隐藏release包,要摘出来单独上传。
./mavenimport.sh -u admin -p admin123 -r http://10.100.240.41:8081/repository/maven-snapshots
./mavenimport.sh -u admin -p admin123 -r http://10.100.240.41:8081/repository/maven-releases