为什么要搭建Maven仓库
Maven默认提供的中央仓库是在远程网络服务Appache提供的,这对于我们开发时不合理的。如果我们没网了或者什么情况,
我们怎么办?也就是说我们队中央仓库的依赖性太大。而Nexus私服则可以解决我们这个问题。先看下这张图应该大家就会明白了:
这样就相当于在我们本地的局域网搭建了一个类似中央仓库的服务器,
我们开始将中央仓库的一些资料下载到私服务器上,然后平时我们的maven项目就是直接访问局域网内的私服即可,
既节省了网络带宽也会加速项目搭建的进程,这样对我们开发来说,对公司来说都是非常好的选择。
如果没有搭建私服会出现什么样的问题 :
如果没有私服,我们所需的所有构件都需要通过 Maven 的中央仓库或者第三方的 Maven 仓库下载到本地,
而一个团队中的所有人都重复的从 Maven 仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。
另外,很多情况下项目的开发都是在内网进行的,可能根本连接不了 Maven 的中央仓库和第三方的 Maven 仓库。
我们开发的公共构件如果需要提供给其它项目使用,也需要搭建私服。
搭建私服的优点 :
Maven 私服的概念就是在本地架设一个 Maven 仓库服务器,在代理远程仓库的同时维护本地仓库。
当我们需要下载一些构件(artifact)时,如果本地仓库没有,再去私服下载,私服没有,
再去中央仓库下载。这样做会有如下一些优点:
- 减少网络带宽流量
- 加速 Maven 构建
- 部署第三方构件
- 提高稳定性、增强控制
- 降低中央仓库的负载
Nexus介绍 :
Nexus 是一个专门的 Maven 仓库管理软件,它不仅能搭建 Maven 私服,
还具备如下一些优点使其日趋成为最流行的 Maven 仓库管理器 ,提供了强大的仓库管理功能,构件搜索功能,它基于 REST,友好的 UI 是一个 ext.js 的 REST 客户端 , 它占用较少的内存 , 基于简单文件系统而非数据库
使用docker安装Nexus3
- 首先执行命令,来搜索Nexus3的镜像
[root@gt-web-wiki ~]# docker search nexus
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
sonatype/nexus3 Sonatype Nexus Repository Manager 3 1091
sonatype/nexus Sonatype Nexus 448 [OK]
nexusnetsoft/shopware-app 1
nexusstats/nexus-stats 1
nexusjpl/collection-manager 1
nexusjpl/solr-cloud 0
nexusera/influx 0
nexusjpl/granule-ingester 0
nexusjpl/cassandra 0
nexusera/device 0
nexusnetsoft/bitbucket-pipline-php 0
nexusjpl/ningester 0
nexusera/auth 0
nexusera/backmanager 0
nexusera/notify 0
nexusjpl/nexus-webapp 0
nexusera/ddi 0
nexusjpl/solr-cloud-init 0
nexus166/gobld https://github.com/nexus166/gobld 0
nexusuw/delay-server a rather crummy mock server that can return … 0 [OK]
nexuscore/phase-smith 0
nexusnetsoft/jenkins-php 0
nexus166/rocketchat https://github.com/nexus166/rocketchat-docker 0
nexusuw/node-8-python-aws-cli quick and dirty build image for doing both n… 0 [OK]
nexusg/node-chrome Dockerfile for node:latest + chrome 0
[root@gt-web-wiki ~]#
- 拉取响应的镜像 (这里我们拉取 : sonatype/nexus3)
docker pull sonatype/nexus3
- 创建宿主机挂载目录,并设置权限
mkdir /home/data/nexus
chown -R 200 /home/data/nexus
- 运行镜像,访问nexus
docker run -itd \
-p 8081:8081 \
--name nexus \
-e NEXUS_CONTEXT=nexus \
-v /home/data/nexus:/nexus-data \
镜像ID
# 命令讲解 :
# 8081:8081表示宿主机端口和容器端口映射
# NEXUS_CONTEXT=nexus表示在访问Nexus后台web时,需要带上nexus进行访问,如http://ip:8081/nexus
# 本地若不存在sonatype/nexus3镜像,则会去下载,下载完毕后直接启动
- 访问nexus (浏览器访问 htp://ip:8081/nexus)
- 登录 :
- 账号是 admin
- 密码 : Nexus3之前的默认密码是admin123 , 但是在3之后 , 密码就是随机生成的了 , 但是密码存放到了一个文件里面 , 而中国文件被我们启动容器时,已经挂载出来了
# 查看admin密码
[root@gt-web-wiki nexus]# cat /home/data/nexus/admin.password
xaw760788698-cedwefwcwe-34vasdarfa
[root@gt-web-wiki nexus]#
下一章