Nexus是什么
本文介绍的Nexus不是谷歌的一个手机品牌哈,而是一个非常强大的仓库管理平台。支持常见的Docker、Maven、npm、PyPI等仓库的管理。
Nexus是一个开源的软件,有Nexus OSS版本和Pro的版本。
Nexus在我们的日常工作中有接触到吗?
在我们的日常工作中,我们是否经常会被已下问题困扰:
1、java开发的项目,使用maven工程进行管理时,编译项目下载jar包时非常缓慢
2、编译前端vue项目,需要使用npm命令下载依赖的插件非常慢
3、使用docker的时候,pull镜像非常慢
4、公司对XXX网络做了限制,可能无法访问到某网络,或者团队成员都要从外网下载某个文件,下载非常慢
......
下面,通过一张图片的对比来介绍一下使用Nexus的好处:
从左边的图片可以看出,开发人员使用传统的方式从官网去下载各种插件,这个过程容易受到网络的影响以及公司网络策略和安全的限制。
从右边的图可以看出,如果在公司内部搭建一个自己的Nexus仓库管理平台的话,那么开发人员只需从内部的仓库中去下载所需文件,下载速度会加快 ,只需在服务器上配置代理仓库到官方仓库即可。
在日常工作中,我们经常会使用类似下面的命令去安装一些所需的插件/软件:
npm install --registry=https://registry.npm.taobao.org
实际上,这些就是国内的一些第三方的镜像仓库。仓库管理目前用的多的应该是Nexus和Artifactory,至于2个工具之间的优势和差异对比 ,感兴趣的可以自己去了解一下。
Nexus OSS免费版的环境搭建
1、安装包下载
官网下载地址:https://www.sonatype.com/nexus/repository-oss/download
百度网盘下载好的地址:
链接:https://pan.baidu.com/s/1grqqQFHCpheFrH8y6QQVmA
提取码:1234
2、linux环境下的部署(以nexus3.27.0-03为例)
将安装包传到服务器某个目录,然后使用tar命令去解压文件
进入到安装目录的bin目录下,执行./nexus start 即可启动nexus
常用命令如下:
./nexus start : 后台启动,类似于nohup
./nexus run : 前台启动,能看到实时刷新的日志信息,关掉窗口后就停止了
./nexus stop:停止服务
注意事项:
a、目前的nexus os3.xxx的版本,需要依赖jdk环境,且必须是jdk1.8
b、如果服务器安装的jdk配置的环境变量不是jdk1.8,在启动的时候会报错:
No suitable Java Virtual Machine could be found on your system.
The version of the JVM must be 1.8.
Please define INSTALL4J_JAVA_HOME to point to a suitable JVM.
解决方法:
修改nexus的bin目录下的nexus文件,将jdk1.8的安装目录配置到INSTALL4J_JAVA_HOME中,无需配置到系统环境变量中去:(之前试过jdk1.8.0_251的版本不行 ,换成jdk1.8.0_261的版本才可以)
c、在安装目录下的etc/nexus-default.properties文件中,可以自定义端口,默认是8081端口。
3、windows环境下的部署
将下载下来的压缩包解压,进入到bin目录下后,在当前目录打开cmd窗口,输入nexus /run 即可启动。
如果启动过程中报下面的错误:
java.lang.NumberFormatException: null
安装目录不能包含中文
将安装目录迁移到不包含中文的路径之后,重新执行命令即可。如果还报错的话,就检查一下jdk的版本,目前在windows上,jdk的版本是11,也可以启动成功。端口号一样的在etc目录下的etc/nexus-default.properties文件中更改。
4、访问nexus环境
在浏览器输入ip+端口号就可以访问。
不管是在linux还是windows上搭建的环境,初始的admin帐号的密码都存储在nexus同层级目录下的sonatype-work文件夹下面的admin.password文件中,登录后会提示你修改默认密码,修改后,该保存初始密码的文件会被清除掉。
Nexus Repository仓库类型介绍
启动nexus服务后,可能要稍微等一会,页面才能正常访问,因为在启动的时候,后台需要初始化一些数据之类的,同时会创建几个maven和nuget默认的仓库。
不管是创建maven还是npm的仓库,在nexus中,仓库主要有proxy,hosted以及group 这3种类型,下面分别介绍一下这3种类型的区别:
- hosted,本地代理仓库,通常用来存储自己编写的一些插件和包到这一类型的仓库,可以push和pull。
- proxy,代理的远程仓库,它们被用来代理远程的公共仓库,如maven*仓库,只能pull,proxy仓库可以用来加速。
- group,仓库组,用来合并多个hosted/proxy仓库,通常我们配置maven依赖仓库组,只能pull。
演示如何通过自己搭建的nexus环境下载jar包编译maven工程代码
登录nexus环境后,在nexus网站找到group类型的maven仓库:maven-public,进入设置页面后,查看该仓库的url地址:
然后将地址填入maven的配置文件中即可(maven安装目录下conf/settings.xml)
maven的settings.xml文件中,在mirrors下面添加一个镜像:
<mirror> <id>maven-public</id> <name>maven-public</name> <url>http://192.168.64.128:8000/repository/maven-public/</url> <mirrorOf>*</mirrorOf> </mirror>
然后找一个maven工程用命令编译,可以看一下输出日志:
从日志可以看出,已经从我们自己搭建的仓库中开始下载插件了。
同时,在仓库中也可以看到有我们下载的一些包:
ps:只有本地没有的包,才会从私服上去下载
好了,到这就已经介绍完了Nexus是如何搭建仓库管理平台的,你get到了吗?有收获的话,帮忙分享给身边的其他小伙伴呗