nexus批量上传与下载

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
    
    
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在Windows系统中,使用Nexus Maven Repository Manager进行批量上传是一个比较常见的需求。下面我将逐步解释如何完成这个任务。 首先,确保你已经安装了Maven和配置好了Maven的环境变量。然后,打开你的项目所在的文件夹,并找到项目根目录下的pom.xml文件。 1. 在pom.xml文件中添加Nexus Maven Repository Manager的配置。在<project>标签下添加如下代码: ```xml <repositories> <repository> <id>nexus</id> <url>你的Nexus仓库URL</url> </repository> </repositories> ``` 注:将“你的Nexus仓库URL”替换为你实际使用的Nexus仓库的URL。 2. 在pom.xml文件中配置需要上传的文件。在<build>标签下添加如下代码: ```xml <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>版本号</version> <configuration> <altDeploymentRepository>nexus::default::你的 Nexus 仓库 URL</altDeploymentRepository> </configuration> </plugin> </plugins> ``` 注:将“版本号”替换为Maven Deploy插件的最新版本号,将“你的 Nexus 仓库 URL”替换为你实际使用的Nexus仓库的URL。 3. 在命令行中执行以下命令,开始批量上传: ``` mvn deploy ``` 这将触发Maven执行deploy命令,并将构建的项目文件上传到配置的Nexus仓库中。 需要注意的是,执行此命令前,请确保你已经将正确的账户凭证配置在你的Maven settings.xml文件中,以便进行身份验证。 总结来说,在Windows系统中使用Nexus Maven仓库管理器进行批量上传,你需要在pom.xml文件中配置相应的Nexus仓库以及上传文件的相关信息,然后通过命令行运行`mvn deploy`命令来执行上传操作。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值