nexus上构件批量上传及下载方法
-
上传本地jar包至nexus
- 使用脚本前需要注意的地方以及需要传入的参数 描述 upload.sh 脚本的名称很重要,需要和脚本中过滤的部分保持一致,将此脚本放在需要上传的本地仓库的目录下 -u 上传所需登陆的用户名 -p 上传所需登陆的用户密码 -r 目标仓库地址 #!/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 #./upload.sh -u admin -p 123 -r http://localhost:8081/repository/repo/ while getopts ":r:u:p:" opt; do case $opt in r) REPO_URL="$OPTARG" ;; u) USERNAME="$OPTARG" ;; p) PASSWORD="$OPTARG" ;; esac done echo "================= ARGS: $REPO_URL:$USERNAME:$PASSWORD ================= ";echo sleep 1 echo "================= START UPLOAD =================" sleep 1 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}/{} ;
-
下载jar包到本地
- 使用脚本前需要修改的参数 描述 URL示例 NEXUS_GROUP_BROWSE 浏览器上使用html看到的仓库目录结构的地址,注意最后面的 “/” 不能少 http://nexus:8081/service/rest/repository/browse/your-group/ NEXUS_GROUP_DOWNLOAD 每一个仓库的地址,注意最后面的 “/” 不能少 http://nexus:8081/repository/your-group/ #!/bin/bash #date:2021/1/4 #author:Javen #description:通过指定NEXUS的Group下载地址下载指定Group上面的全部jar #浏览器上看到的html下载页面的地址 #脚本支持指哪打哪下载目录的能力,例如只需要下载com.alibaba 包下面的文件,就修改浏览器html地址为下面的地址 #NEXUS_GROUP_BROWSE=http://nexus:8081/service/rest/repository/browse/your-group/com/alibaba/ NEXUS_GROUP_BROWSE=http://nexus:8081/service/rest/repository/browse/your-group/ #工程里面配置的私服下载地址,这个主要是为了计算出字符串长度,后面创建目录的时候剪切URL前缀用 NEXUS_GROUP_DOWNLOAD=http://nexus:8081/repository/your-group/ #这里加1是为了在后面创建目录的时候,剪切掉目录前面的“/”,不然mkdir的时候会认为是根目录,没有权限创建文件夹 LENGTH=`expr ${#NEXUS_GROUP_DOWNLOAD} + 1` #echo $LENGTH; #exit; #下载jar function downloadJar() { #输入jar的url #curl -sO $1 #私服是否可以匿名访问,如果不可以匿名访问,加密码 curl -u username:passwd -sO $1 printLog "下载jar 方法: "$1 mkdirJarDir $1 curl -sO $1 cd - >&1 >/dev/null } #判断是否最后一级目录,如果包含jar文件就认为是最后一级目录 function isLastDir(){ printLog "判断是否最后一级目录 $1" local boolLastDir=`echo $1 | egrep 'jar$|jar.sha1|pom|pom.sha1'` if [ -z $boolLastDir ]; then printLog "不是最后一级目录"; #sleep 2 return 10; else printLog "是最后一级目录"; #sleep 2 return 0; fi } #日志打印 function printLog() { echo $1 | tee -a javen.log } #在执行下载方法的时候为jar包创建文件存储路径 function mkdirJarDir() { printLog "为jar包创建合适的存储路径 $1" jarDir=`dirname $1|cut -b$LENGTH-200`; printLog $jarDir mkdir -p $jarDir; cd $jarDir } #递归进行下载 function downList() { for var in `curl -s $1 |grep '<a href'|grep -v 'Parent'| sed 's#<a \([^>]*\)>#--SYN--\1--FIN--#g; s/<//g; s/>//g' | sed 's/--SYN--/</g; s/--FIN--[^<]*</></g; s/[^<]*</</; s/--FIN--.*/>/;' | sed "s#<[^>]*href=\([^a-zA-Z>]*[^ >]*\)[^>]*># @\1@#g; s/<[^>]*>//g; s/'//g; s/@/ /g;s/\"/ /g;"` do #getSubDir $i #echo $1;echo $var isLastDir $1$var retvar=$? if [ $retvar -gt 0 ];then printLog "继续下一级目录"; #sleep 1; downList "$1$var" printLog "==================下一个根目录开始查找======================";echo else downloadJar $var #sleep 1 fi done } rm -rf javen.log 2>&1 >/dev/null downList $NEXUS_GROUP_BROWSE
-
将gradle本地库的目录结构改为maven本地目录结构,详细见 blog
#!/bin/bash #整理jar #author:Javen #date:20200907 #cd ..; MyDir=javen/ rm -rf javen* 2>&1 >/dev/null mkdir -p $MyDir; ls -R * | grep -v '.*/$'| grep -v javen |egrep -B1 '.jar|.pom'|grep -v "\-\-"|tee javenJar.txt; echo;sleep 1 echo '################## START ####################' echo;sleep 2 while read line do endFlag=`echo $line|grep '.*:$'` if [ -n "$endFlag" ]; then sourceDir=`echo $endFlag | awk -F ':' '{print $1}'` #echo $sourceDir destDirTmp=`dirname $line`":" dprefix=`echo $destDirTmp| awk -F '/' '{print $1}'|sed 's#\.#/#g'` dendfix=`echo $destDirTmp| awk -F '/' '{print $2"/"$3"/"$4"/"$5"/"$6"/"$7"/"$8"/"$9}'` #echo "destDirTmp -- " $destDirTmp #echo "dprefix -- "$dprefix #echo "dendfix -- "$dendfix destDir=$MyDir$dprefix/`echo $dendfix | awk -F ':' '{print $1}'` else #echo "原 路 径 -- "$sourceDir/$line #echo "目标路径 -- "$destDir/$line if [ ! -d "$destDir" ]; then echo "directory is not exists; mkdir $destDir" mkdir -p $destDir echo "cp -rp $sourceDir/$line $destDir/$line" cp -rp $sourceDir/$line $destDir/$line; else echo "cp -rp $sourceDir/$line $destDir/$line" cp -rp $sourceDir/$line $destDir/$line; fi; fi; done < javenJar.txt; echo echo "############# FINISH #############" rm -rf javenJar.txt