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
出现上面的界面就代表ok了
二)nexus中的仓库
上面的页面我们点击右上角sign in(默认用户名和密码是admin admin123),我们登录进去之后点击配置和仓库,进入如下页面
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)只有一个系统在开发中,依赖链路非常清晰
2)A项目还在测试阶段,来了个B项目,B说,我要依赖你,这个时候需要把A作为一个仓库
3)A项目上线了,所以需要把A搞成依赖扔到生产仓库
四)添加新仓库
点击页面,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的配置文件setting.xml
如果公司不要求或者自己实战练习,直接配置阿里云的镜像下载到本地仓库就可以了,如下
- <mirror>
- <id>nexus-aliyun</id>
- <mirrorOf>*</mirrorOf>
- <name>Nexus aliyun</name>
- <url>http://maven.aliyun.com/nexus/content/groups/public</url>
- </mirror>
复制代码
但是企业级的实战,是要求统一管控,需要做如下修改,首先是mirror配置
- <mirror>
- <id>nexus</id>
- <mirrorOf>*</mirrorOf>
- <url>http://localhost:8081/nexus/content/groups/public</url>
- </mirror>
复制代码
如上就强制把镜像改为私服,【实际工作中,ip地址会是公司给的】
然后就是添加一个profile配置,覆盖超级pom.xml重的远程仓库和插件仓库
- <profile>
- <id>nexus</id>
- <repositories>
- <repository>
- <id>central</id>
- <name>Nexus </name>
- <url>http://central</url>
- <releases><enabled>true</enabled></releases>
- <snapshots><enabled>true</enabled></snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>central</id>
- <name>Nexus Plugin Repository</name>
- <url>http://central</url>
- <releases><enabled>true</enabled></releases>
- <snapshots><enabled>true</enabled></snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
复制代码
最后给上面的配置需要做生效配置
- <activeProfiles>
- <activeProfile>nexus</activeProfile>
- </activeProfiles>
复制代码
配置好了,在本地项目添加依赖,就会走如下流程
同时我们去私服网站看一下,我们发现私服中有了相关依赖
同时本地添加新依赖也会去仓库中下载依赖
至此,我们整个流程就跑通了,庆祝一下吧,我们的私服可以使用了