一、基本介绍
1,如果没有搭建私服会有什么问题?
- 如果没有私服,我们所需的所有构件都需要通过 Maven 的中央仓库或者第三方的 Maven 仓库下载到本地,而一个团队中的所有人都重复的从 Maven 仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。
- 另外,很多情况下项目的开发都是在内网进行的,可能根本连接不了 Maven 的中央仓库和第三方的 Maven 仓库。
- 我们开发的公共构件如果需要提供给其它项目使用,也需要搭建私服。
2,搭建私服的优点
Maven 私服的概念就是在本地架设一个 Maven 仓库服务器,在代理远程仓库的同时维护本地仓库。当我们需要下载一些构件(artifact)时,如果本地仓库没有,再去私服下载,私服没有,再去中央仓库下载。这样做会有如下一些优点:
- 减少网络带宽流量
- 加速 Maven 构建
- 部署第三方构件
- 提高稳定性、增强控制
- 降低中央仓库的负载
3,Nexus 介绍
Nexus 是一个专门的 Maven 仓库管理软件,它不仅能搭建 Maven 私服,还具备如下一些优点使其日趋成为最流行的 Maven 仓库管理器:
- 提供了强大的仓库管理功能,构件搜索功能
- 它基于 REST,友好的 UI 是一个 ext.js 的 REST 客户端
- 它占用较少的内存
- 基于简单文件系统而非数据库
二、Nexus搭建
本教程使用nexus3.3,安装包已下载,上传解压即可
三、运行
进入bin目录执行命令
启动 | 重启 | 停止 | 控制台启动 | 状态 |
---|---|---|---|---|
./nexus start | ./nexus restart | ./nexus stop | ./nexus run & | ./nexus status |
修改默认端口进入 nexus解压 文件夹,其中 etc/nexus-default.properties 文件配置端口
默认8081
113服务器安装位置 /soft/nexus-3.30.1-01/
首次启动较慢,耐心等待
启动完成后访问 ip: 8081
账号密码 admin@admin123
四、使用
1.登录界面仓库介绍
(1)默认仓库说明:
- maven-central:maven 中央库,默认从 Central Repository: 拉取 jar
- maven-releases:私库发行版 jar,初次安装请将 Deployment policy 设置为 Allow redeploy
- maven-snapshots:私库快照(调试版本)jar
- maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地 maven 基础配置 settings.xml 或项目 pom.xml 中使用
- group:这是一个仓库聚合的概念,用户仓库地址选择 Group 的地址,即可访问 Group 中配置的,用于方便开发人员自己设定的仓库。maven-public 就是一个 Group 类型的仓库,内部设置了多个仓库,访问顺序取决于配置顺序,3.x 默认为 Releases、Snapshots、Central,当然你也可以自己设置。
- hosted:私有仓库,内部项目的发布仓库,专门用来存储我们自己生成的 jar 文件
- snapshots:本地项目的快照仓库
- releases: 本地项目发布的正式版本
- proxy:代理类型,从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的 Configuration 页签下 Remote Storage 属性的值即被代理的远程仓库的路径),如可配置阿里云 maven 仓库
- central:中央仓库
(2)仓库类型说明:
2.增加一个代理库
使用的是阿里云公共仓库。首先点击“Create repository”按钮开始创建一个仓库
类型选择 maven2(proxy):
配置阿里云地址 http://maven.aliyun.com/nexus/content/groups/public/,name 可以随意填(这里我写 aliyun-proxy),然后点击最下方按钮创建
3.Maven 配置使用私服(下载依赖)
3.1 项目独享模式 (项目pom.xml文件)
<repositories> <repository> <id>maven-nexus</id> <name>maven-nexus</name> <url>http://10.102.1.113:9998/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> |
---|
3.2 全局模式(maven 配置文件中 setting.xml)
<mirrors> <mirror> <!--该镜像的唯一标识符。id用来区分不同的mirror元素。 --> <id>maven-public</id> <!--镜像名称 --> <name>maven-public</name> <!--*指的是访问任何仓库都使用我们的私服--> <mirrorOf>*</mirrorOf> <!--该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL。 --> <url>http://10.102.1.113:9998/repository/maven-public/</url> </mirror> </mirrors> |
---|
4.Maven 配置使用私服(发布依赖)
setting.xml 文件添加
项目中pom.xml
<distributionManagement> <repository> <id>nexus-releases</id> <name>Nexus Release Repository</name> <url>http://10.102.1.113:9998/repository/maven-releases/</url> </repository> <snapshotRepository> <id>nexus-snapshots</id> <name>Nexus Snapshot Repository</name> <url>http://10.102.1.113:9998/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement> |
---|
注意:setting.xml server标签中id和pom.xml标签必须保持一致
点击deploy