关于Maven私服的几个问题
-------------------------------------------------------------------------------------------------------------------------------------------
---------------------------- 以下为个人理解,仅供参考,如有错误,欢迎指正 -------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------
Maven的本地仓库,私服,中央仓库以及配置文件settings.xml
私服作为中央仓库和本地仓库的中间部分,可有可无。
公司在自己的局域网内搭建自己的远程仓库服务器,称为私服,私服服务器即是公司内部的 maven 远程仓库,
每个员工的电脑上安装 maven 软件并且连接私服服务器,员工将自己开发的项目打成 jar 并发布到私服服务器,
其它项目组从私服服务器下载所依赖的构件(jar)。
私服还充当一个代理服务器,当私服上没有 jar 包会从互联网中央仓库自动下载,如下图:
依赖jar包下载的顺序
当我们pom.xml中配置某个依赖,没有配置 私服 之前,如果本地仓库没有,去中央仓库下载,但通常在企业中会在
局域网内部署一台私服服务器,有了私服本地项目首先去本地仓库找 jar,如果没有找到则连接私服从私服下载 jar 包,
如果私服没有 jar 包私服同时作为代理服务器从中央仓库下载 jar 包,这样做的好处是一方面由私服对公司项目的依赖
jar 包统一管理,一方面提高下载速度,项目连接私服下载 jar 包的速度要比项目连接中央仓库的速度快的多。
简单来说,就是pom.xml中配置某个依赖,先在本地仓库找,找不到的话去私服找,私服找不到会去中央仓库找。
私服登录界面
内置账户 admin/admin123
登录成后下面为固有的仓库,并且仓库有4中类型:
- hosted,宿主仓库,部署自己的 jar 到这个类型的仓库,包括 releases 和 snapshot 两部
分,Releases 公司内部发布版本仓库、 Snapshots 公司内部测试版本仓库 - proxy,代理仓库,用于代理远程的公共仓库,如 maven 中央仓库,用户连接私服,私
服自动去中央仓库下载 jar 包或者插件。 - group,仓库组,用来合并多个 hosted/proxy 仓库,通常我们配置自己的 maven 连接仓
库组。 - virtual(虚拟):兼容 Maven1 版本的 jar 或者插件
- central: 代理仓库,代理中央仓库
- apache-snapshots: 代理仓库,存储snapshots构件,代理地址https://repository.apache.org/snapshots
- central-m1: virtual 类型仓库,兼容 Maven1 版本的 jar 或者插件
- releases: 本地仓库,存储 releases构件。
- snapshots: 本地仓库,存储 snapshots构件。
- thirdparty: 第三方仓库
- public: 仓库组
其中public就相当于一个存放别的仓库引用(或者说地址)的仓库,public仓库不存放构件(jar包),public只包含别的仓库,当配置文件配置了public仓库,则相当于配置了public所包含的仓库,如下图
配置文件settings.xml
本地安装后maven仓库后,打开安装目录在conf文件夹下找到settings.xml
maven项目在pom.xml中添加依赖,需要从私服,或者中央仓库下载依赖到本地仓库。以及将自己的项目包发布到私服,都需要先在settings.xml中进行相应的配置。
下面说下我对这个配