maven+nuxes将jar自动上传到私有仓库
Posted Lucky-生生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven+nuxes将jar自动上传到私有仓库相关的知识,希望对你有一定的参考价值。
两天学习nexus,在学校的时候学习这个没有什么思路,只能自己百度学习。同事给了我3000个jar包,上传还需要一条一条上传,没办法,写个小脚本。
首先安装maven 安装nexus
nexus需要监听的端口为8081,确保本地端口8081没有占有
先安装maven
将包拖入到虚拟机中
jdk-8u201-linux-x64.tar.gz #java环境软件包
apache-maven-3.6.0-bin.tar.gz #maven软件包
1 [root@localhost ~]# rm -rf /usr/bin/java 2 [root@localhost ~]# tar -zxf jdk-8u201-linux-x64.tar.gz 3 [root@localhost ~]# mv jdk1.8.0_201/ /usr/local/java 4 [root@localhost ~]# vim /etc/profile 5 添加:最后一行 6 export JAVA_HOME=/usr/local/java 7 export JRE_HOME=$JAVA_HOME/jre 8 export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib 9 export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin 10 [root@localhost ~]#source /etc/profile 11 [root@localhost ~]# java -version 12 java version "1.8.0_201" 13 Java(TM) SE Runtime Environment (build 1.8.0_201-b09) 14 Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode) 15 [root@localhost ~]# tar -zxf apache-maven-3.6.0-bin.tar.gz 16 [root@localhost ~]# mv apache-maven-3.6.0 /usr/local/maven 17 [root@localhost ~]# vim /etc/profile 18 添加:最后一行 19 export PATH=$PATH:$PATH:/usr/local/maven/bin 20 [root@localhost ~]# source /etc/profile 21 [root@localhost ~]# mvn -v
Maven设置阿里云加速镜像
1 [root@localhost test]# vim /usr/local/maven/conf/settings.xml 2 添加:158行 3 <mirror> ###镜像 4 <id>aliyun</id> ###添加镜像的id 5 <name>aliyun maven</name> ###添加镜像的名字 6 <url>http://maven.aliyun.com/nexus/content/groups/public/</url>##阿里云地址 7 <mirrorOf>central</mirrorOf> ###拦截中央仓库的请求 8 </mirror>
安装nexus
需要软件包nexus-3.14.0-04-unix.tar.gz
[root@localhost ~]# mkdir /usr/local/nexus
[root@localhost ~]# tar -zxf nexus-3.14.0-04-unix.tar.gz -C /usr/local/nexus/
1 启动 /usr/local/nexus/nexus-3.14.0-04/bin/nexus start 2 停止 /usr/local/nexus/nexus-3.14.0-04/bin/nexus stop 3 重启 /usr/local/nexus/nexus-3.14.0-04/bin/nexus restart 4 访问地址为IP+8081 5 默认账号为admin 密码为admin123 6 如果想要修改端口执行以下操作 7 去掉注释并且修改为你指定的端口 8 vim /usr/local/nexus/sonatype-work/nexus3/etc/nexus.properties 9 # application-port=8081 10 application-port=8082 11 使用sed命令直接替换 12 sed -i "s/#\\ application-port=8081/application-port=8082/" /usr/local/nexus/sonatype-work/nexus3/etc/nexus.properties 13 重新启动程序 14 /usr/local/nexus/nexus-3.14.0-04/bin/nexus restart
接下需要将jar包上传到nexus私有仓库
首先创建我们需要的库(一下三个)
Group 仓库组 用于方便开发人员
Hosted 宿主类型 内部项目的发布仓库
Proxy代理类型 从远程中央仓库中寻找数据的仓库
首先登录账号密码,在右上角
创建库存放jar包的位置
创建代理库
其他的不用管,点击确定。
下面给出一些maven远程仓库的地址:
1 jboss的maven中央仓库地址:http://repository.jboss.com/maven2/ 2 阿里云的maven中央仓库地址:http://maven.aliyun.com/nexus/content/groups/public/ 3 apache的maven中央仓库地址:http://repo.maven.apache.org/maven2/
创建本地组
创建组仓库
可以查看到刚才创建的库
让maven使用nexus私有仓库
1 vim /usr/local/maven/conf/settings.xml 2 3 在<servers> 标签中添加 4 5 #<servers> 6 7 #在112行添加 8 9 <server> 10 11 <id>nexus_hosted</id> 12 13 <username>admin</username> 14 15 <password>admin123</password> 16 17 </server> 18 19 #</servers>
1 在<mirrors>标签中添加(指定maven使用的仓库) 2 #<mirrors> 3 在152行添加 4 <mirror> 5 <id>aliyun</id> 6 <name>aliyun maven</name> 7 <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 8 <mirrorOf>central</mirrorOf> 9 </mirror> 10 <mirror> 11 <id>nexus</id> 12 <name>nexus repository</name> 13 <url>http://192.168.3.100:8082/repository/sheng_group/</url> 14 <mirrorOf>central</mirrorOf> 15 </mirror> 16 # </mirrors>
使用命令将jar包上传到nexus仓库
mvn deploy:deploy-file -DgroupId=httpclient -DartifactId=httpclient -Dversion=4.3.3 -Dpackaging=jar -Dfile=./httpclient-4.3.3.jar -Durl=http://192.168.3.131:8081/repository/nexus_hosted/ -DrepositoryId=nexus_hosted -DgroupId=sxd.jar 自定义 -DartifactId=jacob 自定义 -Dversion=1.18 自定义 三个自定义,构成pom.xml文件中的坐标 -Dpackaging=jar 上传的类型是jar类型 -Dfile=G:\\jar\\jacob-1.18.jar jar的本地磁盘位置 -Durl=http://localhost:8081/repository/myself_hosted/ hosted资源库的地址,下图中 -DrepositoryId=myself_hosted setting.xml文件中配置的ID
将jar放在以下目录中
/usr/local/nexus/sonatype-work/nexus3/blobs/NexusDirect/content/
jetty-http-7.5.4.v20111024.jar
mvn deploy:deploy-file -DgroupId=jetty-http -DartifactId=jetty-http -Dversion=7.5.4.v20111024 -Dpackaging=jar -Dfile=./jetty-http-7.5.4.v20111024.jar -Durl=http://192.168.3.100:8082/repository/sheng_hosted/ -DrepositoryId=nexus_hosted
接下来去web仓库验证,看到显示上传成功。
脚本上传
1 #!/bin/bash 2 count=0 3 a=`ls *.jar` #收集当前目录所有jar包 4 for i in $a; #循环所有jar包 5 do 6 let "count=$count+1" #记录成功次数 7 a1=`echo $i | grep -o \'-\' |wc -l` #统计jar名称中有几个”-” 8 a2=`echo $i | cut -d- -f1-$a1` #zookeeper-3.4.9.jar 上面a1获取到有1个(-),那么我们可以指定以-进行分割(分割完zookeeper是第一个区域,3.4.9.jar是第二个区域) 9 #cut -d- -f1-$a1 (-d表示指定以什么符号分割)(-f代表获取的区域(也就是-f1-1获取第一个区域)) 10 let "c=$a1+1" #下一行做准备 11 a3=`echo $i | cut -d- -f$c |sed -e \'s/.jar//\'` 12 # cut -d- -f$c (现在你应该可以看懂了 c=2 (也就是获取第二个区域)) 13 #sed -e \'s/.jar//\' sed 替换,我们只想要版本号所以将.jar替换为空 14 mvn deploy:deploy-file -DgroupId=$a2 -DartifactId=$a2 -Dversion=$a3 -Dpackaging=jar -Dfile=./$i -Durl=http://192.168.3.131:8081/repository/nexus_hosted/ -DrepositoryId=nexus_hosted >/dev/null 15 if [ $? -eq 0 ]; then #去判断如果成功把jar包移动到sheng目录下 16 echo "第"$count"次"secceed $i 17 mv $i ./sheng 18 fi 19 done
如果目录中还有文件没有上传成功,请手动上传
以上是关于maven+nuxes将jar自动上传到私有仓库的主要内容,如果未能解决你的问题,请参考以下文章