maven+nuxes将jar自动上传到私有仓库

Posted Lucky-生生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven+nuxes将jar自动上传到私有仓库相关的知识,希望对你有一定的参考价值。

两天学习nexus,在学校的时候学习这个没有什么思路,只能自己百度学习。同事给了我3000jar包,上传还需要一条一条上传,没办法,写个小脚本。

首先安装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自动上传到私有仓库的主要内容,如果未能解决你的问题,请参考以下文章

maven deploy 上传jar包到私有仓库

如何使用maven把模块生成的jar包上传到中央仓库去

上传本地Jar包到阿里云的云效私有仓库

如何把本地仓库批量上传到maven仓库

通过Nexus搭建maven私有仓库,并通过gradle上传jar

Maven组件通过命令上传本地和私有仓库