私服就是私有服务。
A开发了一个a项目(本地仓库),B想要使用(无法使用)。
解决方案:让A把a项目上传到中央仓库,中央仓库拒收 ×
解决方法:让A把a项目上传到私服(仅供指定的人使用的中央仓库),B也连接到私服,就可以下载内容了!
私服:(1)提供了和中央仓库一样的功能,都可以被多人访问,进行资源的上传与下载。 (2) 私服不面向所有用户,仅面向部分用户(公司内部的开发人员)
弊端:私服需要自己搭建,中央仓库不需要搭建!需要自己进行权限的配置。
Nexus是SonaType公司出品的一个【开源免费】的私服项目,仅需要进行基础的配置,即可在公司内部搭建一个私有服务器!
下载方式:基于官网进行下载 Sonatype Nexus Repository - 二进制和工件管理 |声纳型
下载完成之后:
解压之后,进入到解压目录的bin目录中,会看到一个nexus.exe的程序,通过命令提示符的方式启动。
nexus.exe /run nexus
注意:环境变量中必须有可用的JAVA_HOME,才可以启动!
私服的服务默认会部署在8081端口,直接访问localhost:8081即可!
右上角登录 -> 用户名admin 密码(根据提示找到对应文件打开复制粘贴)-> 下一步指定一个新密码 -> 允许匿名访问。
Maven的私服Nexus的核心概念
代理仓库:类似于私服中的中央仓库,当Maven本地没有资源的时候,发送请求到私服,如果资源是一个中央仓库的资源,就会通过代理仓库进行下载。
宿主仓库:类似于私服中的私有仓库,开发者自己的jar包,会保存到宿主仓库中。
仓库组:编排仓库的一种方式,将多个仓库分成一组!
Maven的私服Nexus的代理下载
(1)让私服中的代理仓库在没有资源的时候默认不访问中央仓库下载,默认访问阿里云仓库进行下载!
将远程URL路径修改为阿里云的仓库路径
https://maven.aliyun.com/repository/public
(2)手动创建Maven私服仓库
Snapshot : 快照(不稳定的(可能有BUG))
Release :发布(发布版(稳定))
金丝雀 :极其不稳定(Google)/ α β γ 【不稳定版】
(3)声明本地Maven连接私服的方式
在本地Maven的conf的settings.xml中声明私服的用户名和和密码
<servers>
<!-- 一组server就是用于去指定一组用户名与密码的 -->
<server>
<!-- 认证信息的Id名称(给这组认证信息起个名字) / 私服的访问用户名 / 私服的访问密码-->
<id>web-410-auth</id>
<username>admin</username>
<password>admin</password>
</server>
</servers>
在<mirrors>声明将所有的下载请求转发到私服
<mirrors>
<mirror>
<id>web-410-auth</id>
<!-- 声明本地仓库发出的哪些请求要进行转发 -->
<mirrorOf>*</mirrorOf>
<name>web-410-私服仓库</name>
<!-- 声明访问的私服的仓库组的URL地址 -->
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
</mirrors>
Maven的私服Nexus的上传
上传当前IDEA中的Maven项目发布到私服。
需要在IDEA中进行配置! 是在要发布的资源的pom.xml文件中进行配置!
想要上传哪个Maven项目到私服中,就在哪个Maven的pom.xml中进行声明
之前要做下载,只需要配置一个仓库组(会自动去管理的所有仓库中找资源)
<!-- distributionManagement:声明当前项目发布到私服的相关信息 -->
<distributionManagement>
<!-- (1)如果当前项目是RELEASE的项目,发布到哪个仓库中 -->
<repository>
<!-- id用于声明使用settings.xml中<servers>中哪个id的认证的用户名和密码进行权限 -->
<id>web-410-auth</id>
<!-- url用于声明当前项目要上传到哪个仓库 声明的是仓库的URL路径 (▲不是仓库组)-->
<url>http://localhost:8081/repository/web-410-release/</url>
</repository>
<!-- (2)如果当前项目是SNAPSHOT的项目,发布到哪个仓库中 -->
<snapshotRepository>
<!-- id用于声明使用settings.xml中<servers>中哪个id的认证的用户名和密码进行权限 -->
<id>web-410-auth</id>
<!-- url用于声明当前项目要上传到哪个仓库 声明的是仓库的URL路径 (▲不是仓库组)-->
<url>http://localhost:8081/repository/web-410-snapshot/</url>
</snapshotRepository>
</distributionManagement>
发布:Maven的生命周期
Maven有三套生命周期:清理 、 安装 、 发布!