介绍
Maven 私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的远程仓库(中央仓库、其他远程公共仓库)。
建立了 Maven 私服后,当局域网内的用户需要某个构件时,会按照如下顺序进行请求和下载。
1.请求本地仓库,若本地仓库不存在所需构件,则跳转到第 2 步;
2.请求 Maven 私服,将所需构件下载到本地仓库,若私服中不存在所需构件,则跳转到第 3 步。
3.请求外部的远程仓库,将所需构件下载并缓存到 Maven 私服,若外部远程仓库不存在所需构件,则 Maven 直接报错。
下图中展示了 Maven 私服的用途。
Maven 私服优势
Maven 私服具有以下 5 点优势:
- 节省外网带宽
大量对于外部远程仓库的重复请求,会消耗很大量的带宽,利用 Maven 私服代理外部仓库后,能够消除对外部仓库的大量重复请求,降低外网带宽压力。 - 下载速度更快
Maven 私服位于局域网内,从私服下载构建更快更稳定。 - 便于部署第三方构件
有些构件是无法从任何一个远程仓库中获得的(例如,某公司或组织内部的私有构件、Oracle 的 JDBC 驱动等),建立私服之后,就可以将这些构件部署到私服中,供内部 Maven 项目使用。 - 提高项目的稳定性,增强对项目的控制
如果不建立私服,那么 Maven 项目的构件就高度依赖外部的远程仓库,若外部网络不稳定,则项目的构建过程也会变得不稳定。
建立私服后,即使外部网络状况不佳甚至中断,只要私服中已经缓存了所需的构件,Maven 也能够正常运行。
此外,一些私服软件(如 Nexus)还提供了很多额外控制功能,例如,权限管理、RELEASE/SNAPSHOT 版本控制等,可以对仓库进行一些更加高级的控制。 - 降低中央仓库得负荷压力
由于私服会缓存中央仓库得构件,避免了很多对中央仓库的重复下载,降低了中央仓库的负荷。
搭建
1.创建YML文件
vi docker-compose-nexus.yml
version: '3'
services:
nexus:
image: sonatype/nexus3
restart: always
container_name: nexus
privileged: true
ports:
- 8081:8081
# - 15000:5000
# - 18082:8082
# - 18083:8083
volumes:
- /data/nexus/data:/nexus-data
environment:
- ES_JAVA_OPTS="-Xmx1024m -Xms256m"
network_mode: host
2.启动服务
docker-compose -f docker-compose-nexus.yml up -d
3.访问服务 http://192.168.1.57:8081
用户为:admin
密码在初始化文件中 admin.password 中文件位于数据目录下
cat /data/nexus/data/admin.password
第一次访问需要修改admin密码按提示一步一步完成即可。
设置完密码会有个匿名访问的设置,根据需求去开启就好。到此私服就搭建完成了。