前言
首先我们先来了解一些基本的概念,再来学习搭建。
什么是私服?
首先我们先了解maven的获取顺序,如下图所示:
![maven获取jar执行流图](https://img-blog.csdnimg.cn/59385c76960e4c289cb0b05079dbd8e4.jpeg)
当我们需要获取mavenjar包的时候,就会先在本地区获取,如果没有就一层一层先上去获取。
而我们的私服就是代理仓库这一层
优势
- 节省网络带宽
- 下载更加稳定
- 如果有内部组件库,可以方便使用
- 提高项目稳定性
为什么要用私服?
场景描述:当我们在项目开发中,希望使用其他的项目的巩固,如果将这个项目内的内容拷贝到其他项目就会赵成项目的冗余并且如果这个项目是保密性的,是不能对外开放的。
那么基于以上原因,我们就需要搭建自己的私服,通过我们自定义的GAV坐标,将我们自己开发的项目上传到maven私服中,这样别人也可以使用我们自己编写的项目了。
- 有一个开源项目公司正在使用,但是处于业务,需要针对这个项目进行二次开发,我们不能直接使用maven中央仓库依赖了,此时可以将二次开发的项目上传到公司内部使用。
- 使用私服来加快我们搭建项目的速度。
如何用?
上面了解了基本使用概念,那么下面就开始详细介绍如何去下载,这里我就直接用一条docker命令来解决安装问题了。
下载安装
内存条件:这里在我看配置的时候,需要大概2g的内存启动内存,当然这个内存是可以调整的,这里参考我的另外一篇文章Docker设置启动大小 ,如果私服实在没有那么大的内存,就会出现启动不成功。
命令:
docker run --detach -p 8081:8081 --name nexus sonatype/nexus3
这里拉取的配置就是使用的最新的nexus3,可以的话就访问自己的网址,默认端口是:8081
修改自己的连接:http://ip:8081
![maven私服启动页面](https://img-blog.csdnimg.cn/b326481c016947048aee4722a4b46136.png)
启动配置
登录
首先我们需要点击右上角登录,这里我们第一次登录不知道密码,就需要去docker中去查看。
查看自己的启动内容
[root@VM-0-2-centos ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c4154924a227 sonatype/nexus3 "sh -c ${SONATYPE_DI…" 25 hours ago Up 25 hours 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp nexus
# 进入容器内部
docker exec -it c4154924a227 /bin/bash
bash-4.4$ cat /nexus-data/admin.password
# 下面显示的内容就是第一次登录的密码
password
复制password,到登录页面输入即可
然后上面我们登录之后,就可以再一次的修改密码了。
内部仓库定义
nexus默认已建好4个库,简单解析下各个库的作用
- maven-central 默认配好的中央仓库,指向https://repo1.maven.org/maven2/,然后就需要我们去修改为阿里云的仓库地址
- maven-releases 一般用于自己存放自己开发项目的稳定版本,默认不能重复发布,即deploy,可以设置为允许重复deploy
- maven-snapshots 一般用于存放自己开发项目的快照版本,默认允许重复发布
- maven-public 组合库,一般是组合以上三种库,通常在项目中配置这个仓库
仓库类型说明
- group:仓库聚合,默认是releases>snapshots>central,可以在仓库管理界面引入其他配置的库,并设置顺序
- hosted:私有仓库,存放自己开发的jar
- snapshots:本地项目的快照仓库
- releases: 本地项目发布的正式版本
- proxy:代理类型,可以配置aliyun的仓库
- central:中央仓库
配置远程仓库
击create 仓库,来创建,然后下面我们自己设置自己的仓库内容
![内部页面](https://img-blog.csdnimg.cn/4e5e6ecddf7e4786a3266d80cdb3dcad.png)
进入到仓库类型这里就选择下面这个
![仓库类型选择](https://img-blog.csdnimg.cn/6a91c521b90c44f4bae431d750c7f988.png)
然后我们在进入到:maven-public中
![配置定义好的仓库](https://img-blog.csdnimg.cn/fbf8fcfcc90a4304a961a8027e2189f8.png)
将我们最新添加的aliyun仓库添加到最上面即可。如下图
![添加配置](https://img-blog.csdnimg.cn/25c865a036044bc08402b99c1d8d87c8.png)
上传jar包
完成上面的配置之后,就可以上传写好的jar包了,下面我们就能使用。
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>/Volumes/config/maven/apache-maven-3.5.4</localRepository>
<servers>
<server>
<id>nexus</id>
<username>账号</username>
<password>密码</password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://ip:8081/repository/maven-releases//</url>
<!-- <url>http://repo1.maven.org/maven2/</url> -->
</mirror>
</mirrors>
</settings>
<distributionManagement>
<repository>
<id>nexus</id>
<name>Nexus Releases Repository</name>
<url>http://ip:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus</id>
<name>Nexus Snapshot Repository</name>
<url>http://ip:8081/repository/maven-repository/</url>
</snapshotRepository>
</distributionManagement>
需要注意的是这里的id都需要统一,然后点击部署,即可发布成功
![pom定义](https://img-blog.csdnimg.cn/834c0d0238d74847b9ed49e42a62dd9c.png)
- 如果有- 新的大版本需要更新就需要去修改下面这个位置
<version>2.0-RELEASES</version>
再次安装上面的步骤进行重新部署,我们就会得到两个版本。
使用
如果我们需要使用上面的依赖,就需要我们配置maven,选择我们需要的setting.xml,然后在引入相关依赖,这个依赖我们在maven私服中去查看
![私服选择](https://img-blog.csdnimg.cn/afc7fbc8e5cb4b1298ccb7eadb202674.png)
添加到自己的maven中就完成了我们的引入依赖使用