Maven 私服的使用

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

 

二、Nexus 安装 Maven 私服

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

 

三、Nexus 后台管理界面

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 中添加几个本地仓库中没有的依赖

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 包

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

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

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

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

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

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

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

3、验证

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

 

4.2、第三方 jar 包的管理

1、新建一个第三方仓库

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

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

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

 

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

 

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

 

posted @ 2020-12-22 18:43  变体精灵  阅读(1264)  评论(0编辑  收藏  举报