一、前言、为什么要搭建私服?
1、公司不提供外网给开发人员,无法使用 Maven 访问远程仓库,此时可以在局域网内找一台能访问外网的主机搭建 Maven 私服.
2、公司有第三方 jar 包,这些 jar 包中央仓库没有录入,无法从中央仓库下载到我们本地仓库,只能通过其他人拷贝的方式才能获取.
3、适用于一人多台电脑,多人多台电脑的情况.因为不管是在哪一台主机,只要私服中存在我们想要的 jar 包,我们都可以从私服中获取
4、私服的带宽更大,访问更快,公司方便管理.

 

二、Nexus 安装 Maven 私服

关于 Nexus 如何搭建 Maven 私服,可以参考这篇博客: https://www.cnblogs.com/xiaomaomao/p/14172062.html

 

三、Nexus 后台管理界面

Maven 私服的使用

3.1、Name

  • central: 该仓库代理 Maven 的中央仓库,策略为 Release ,只会下载和缓存中央仓库中的发布版本构件,我的理解:该仓库就是 Maven 中央仓库的中介,例如:你想从中央仓库中下载 jar 包,先必须要通过它,由它去帮你完成
  • public: 仓库组,将所有的仓库聚合并通过一致的地址提供服务.我的理解:就是一个可以可以将其它不同策略的仓库组合在一起的大仓库
  • releases: 策略为 Release 的宿主类型仓库,用来部署组织内部的发布版本构件.我的理解:就是公司内部项目发布的正式版本
  • snapshots: 策略为 Snapshots 的宿主类型仓库,用来部署组织内部的快照版本构件.我的理解:就是公司内部项目发布的测试版本
  • 3rd party:一个策略为 Release 的宿主类型仓库,用来部署无法从公共仓库获得的第三方发布版本构件.我的理解:既不属于中央仓库,也不属于公司自己的,就是第三方jar包. Nexus3 没有了 3rd party 仓库,需要自己创建
  • nuget: .net 使用的仓库,可以忽略

2、Type

  • group(仓库组类型):又叫组仓库,用于方便开发人员自己设定的仓库(能够组合一个或者多个仓库为一个地址提供服务)
  • hosted(宿主类型):内部项目的发布仓库(内部开发人员,发布上去存放的仓库)
  • proxy(代理类型):从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的 Configuration 页签下 Remote Storage Location 属性的值即被代理的远程仓库的路径)
  • virtual(虚拟类型):虚拟仓库(这个基本用不到,重点关注上面三个仓库的使用)

3、Format

  • maven2 是 JAVA 仓库
  • nuget 是 .net 仓库

4、Status

  • online : 正常
  • oneline Ready To connect : 正常

5、URL

  • 可以点击 copy 选项复制某一个仓库的地址

 

四、私服的使用

4.1、配置本地 Maven 从 Nexus 下载构件

私服会存储我们项目所有的依赖,方便管理依赖,如果以后需要该项目的依赖,直接从私服上下载就可以了,相比于直接从中央仓库下载速度更快

方式一、依赖查找顺序:本地仓库---->私服(镜像)----> Maven 中央仓库.

先到本地仓库查找需要的依赖,如果本地仓库没有找到则接着去私服查找,如果私服中还没有找到则最后去中央仓库查找,找到依赖后将依赖存储在私服和本地仓库.
1、在本机 settings.xml 文件配置私服为镜像

<mirror>
	<id>nexus-public</id>
	<name>nexus public</name>
	<mirrorOf>*</mirrorOf>
	<url>http://192.168.198.129:8081/repository/maven-public/</url>
</mirror>

2、然后在项目的 pom.xml 中添加几个本地仓库中没有的依赖

Maven 私服的使用

3、更新依赖,如果出现如下报错,则需要配置授权

Could not transfer artifact org.apache.activemq:activemq-all:pom:5.15.5 from/to nexus-public 
(http://192.168.198.129:8081/repository/maven-public/): Not authorized

配置用户名和密码

<server>
	<!--标签中的 id 与 mirror 标签中的 id 值保持一致-->
	<id>nexus-public</id>
	<username>admin</username>
	<password>admin123</password>
</server>

4、配置完成了之后,继续更新 Maven 依赖,可以看到正在从私服上下载我们本地仓库中没有的 jar 包

Maven 私服的使用

5、查看中央仓库代理仓库 maven-central ,可以看到依赖已经从中央仓库下载下来了

Maven 私服的使用

6、查看我们配置的仓库 maven-public ,依赖也下载下来了

Maven 私服的使用

方式二、依赖查找顺序:本地仓库---->私服(镜像)---->阿里云镜像仓库----> Maven 中央仓库.

上面的方式一查找顺序是私服中找不到的依赖会直接去 Maven 中央仓库中去查找,我们都知道中央仓库由于是国外的服务器,下载速度较慢,我们可以配置一个代理仓库(这里配置的是阿里云镜像仓库),私服中不存在的依赖,可以先去国内镜像仓库查找,找不到的话,最后才去 Maven 的中央仓库中查找,这样下载依赖的效率会高一些

1、先添加一个阿里云的代理仓库

Maven 私服的使用

Maven 私服的使用

Maven 私服的使用

Maven 私服的使用

2、在 maven-public 中调整仓库的顺序

我们在 settings.xml 中配置的是 maven-public 的地址,这个仓库组可以组合一系列的仓库,各个仓库之间的查找是有顺序的,所以我们需要配置它们的查找顺序

Maven 私服的使用

3、验证

在项目中添加一个本地仓库中没有的 jar 包,更新依赖,查看 maven-public 和 aliyun-xiaomaomao-proxy 镜像仓库中是否存在你需要的依赖

 

4.2、第三方 jar 包的管理

1、新建一个第三方仓库

Maven 私服的使用

Maven 私服的使用

Maven 私服的使用

Maven 私服的使用

2、上传第三方 jar 包到第三方仓库

Maven 私服的使用

3、填写第三方 jar 包的相关信息,为了简便,我这里以 dom4j 这个 jar 包来做演示

Maven 私服的使用

4、第三方仓库中验证 jar 包是否上传成功

Maven 私服的使用

 

4.3、将本地构建发布到私服

1、配置认证信息

// settings.xml 中配置私服的认证信息
<server>
	<id>nexus-3rd-part</id>
	<username>admin</username>
	<password>admin123</password>
</server>
<server>
	<id>nexus-releases</id>
	<username>admin</username>
	<password>admin123</password>
</server>
<server>
	<id>nexus-snapshots</id>
	<username>admin</username>
	<password>admin123</password>
</server>

2、项目 pom.xml 中配置仓库信息

// pom.xml 中配置私服仓库信息
<distributionManagement>
	<repository>
		<!--id 标签中的值要与 settings.xml server 标签中 id 标签的值相同-->
		<id>nexus-releases</id>
		<url>http://192.168.198.129:8081/repository/maven-releases/</url>
	</repository>
	<snapshotRepository>
		<id>nexus-snapshots</id>
		<url>http://192.168.198.129:8081/repository/maven-snapshots/</url>
	</snapshotRepository>
</distributionManagement>

3、发布到私服

mvn clean deploy

Maven 私服的使用 

4、查看私服的对应仓库中是否有 jar 包

Maven 私服的使用

 

相关文章: