maven系列:大话私服

前面我们讲解仓库的层级结构的时候也提到了私服,现在我们就详细讲解一下我们要借助nexus来实现我们想要的私服
一)下载安装
https://www.sonatype.com/download-oss-sonatype
下载对应版本(例子中我们下载的是windows版本),然后解压,会有两个文件夹(一个sonatype-work,一个nexus-3.14.0-04【后面的数字是版本号,具体看你下载时候的版本,可能会跟我的不一样】)
然后cmd到nexus-3.14.0-04\bin,我们看到有exe文件,执行命令nexus.exe/run启动,这个过程时间会比较长,还请耐心等待,启动成功之后,浏览器输入localhost:8081
maven系列:大话私服 

出现上面的界面就代表ok了

二)nexus中的仓库
上面的页面我们点击右上角sign in(默认用户名和密码是admin admin123),我们登录进去之后点击配置和仓库,进入如下页面
maven系列:大话私服 


1)name
maven-central:中央仓库的代理仓库
maven-public:仓库组,这个最全面啦
maven-releases:宿主仓库(可以在生产环境使用)
maven-snapshots:宿主仓库(但是是测试版本,测试成功之后,就可以放入到maven-releases中)
(补充,3rd party:别的厂商的一些依赖)


2)type
proxy:代理仓库,代理公司外部的各种仓库
group:仓库组,讲各种代理仓库,宿主仓库组成一个虚拟的仓库组,这样我们的开发使用这个就可以使用其他的所有的仓库中的依赖了
hosted:宿主仓库,公司中A成员把代码发布包部署到这个仓库来,公司中B成员就可以从这个仓库中下载依赖去使用

3)format
我们现在都使用的是maven2(maven1已经成为了历史,让我们忘掉它吧)

三)实际开发几种状况
1)只有一个系统在开发中,依赖链路非常清晰
maven系列:大话私服 


2)A项目还在测试阶段,来了个B项目,B说,我要依赖你,这个时候需要把A作为一个仓库
maven系列:大话私服 


3)A项目上线了,所以需要把A搞成依赖扔到生产仓库
maven系列:大话私服 


四)添加新仓库
点击页面,create repository按钮,选择maven2(hosted),填入name,比如3rd-party,点击saven按钮
回到repositories页面,我们点击maven-central,把proxy替换成阿里云的镜像地址http://maven.aliyun.com/nexus/content/groups/public,
回到repositories页面,我们点击maven-public,把group中新增的仓库添加到public仓库中去

因为还没有让私服和本地开发关联起来,我们可以看到私服仓库中没有依赖文件
maven系列:大话私服 


五)强制让所有远程仓库请求通过镜像走私服
我们看一下maven的配置文件setting.xml
如果公司不要求或者自己实战练习,直接配置阿里云的镜像下载到本地仓库就可以了,如下

 

  1.         <mirror>
  2.                 <id>nexus-aliyun</id>
  3.                 <mirrorOf>*</mirrorOf>
  4.                 <name>Nexus aliyun</name>
  5.                 <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  6.         </mirror>

复制代码




但是企业级的实战,是要求统一管控,需要做如下修改,首先是mirror配置

  1.         <mirror>
  2.                 <id>nexus</id>
  3.                 <mirrorOf>*</mirrorOf>
  4.                 <url>http://localhost:8081/nexus/content/groups/public</url>
  5.         </mirror>

复制代码




如上就强制把镜像改为私服,【实际工作中,ip地址会是公司给的】
然后就是添加一个profile配置,覆盖超级pom.xml重的远程仓库和插件仓库

  1. <profile>
  2.                 <id>nexus</id>
  3.               <repositories>
  4.                         <repository>
  5.                                 <id>central</id>
  6.                                 <name>Nexus </name>
  7.                                 <url>http://central</url>
  8.                                 <releases><enabled>true</enabled></releases>
  9.                                 <snapshots><enabled>true</enabled></snapshots>
  10.                         </repository>
  11.               </repositories>
  12.               <pluginRepositories>
  13.                         <pluginRepository>
  14.                                 <id>central</id>
  15.                                 <name>Nexus Plugin Repository</name>
  16.                                 <url>http://central</url>
  17.                                 <releases><enabled>true</enabled></releases>
  18.                                 <snapshots><enabled>true</enabled></snapshots>
  19.                         </pluginRepository>
  20.               </pluginRepositories>
  21.         </profile>

复制代码




最后给上面的配置需要做生效配置

  1.         <activeProfiles>
  2.                 <activeProfile>nexus</activeProfile>
  3.         </activeProfiles>

复制代码




配置好了,在本地项目添加依赖,就会走如下流程
maven系列:大话私服 
同时我们去私服网站看一下,我们发现私服中有了相关依赖
maven系列:大话私服 

同时本地添加新依赖也会去仓库中下载依赖
maven系列:大话私服 

至此,我们整个流程就跑通了,庆祝一下吧,我们的私服可以使用了