Nexus3 OSS环境搭建以及在日常工作中的用途

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到了吗?有收获的话,帮忙分享给身边的其他小伙伴呗

posted @ 2020-09-23 18:08  小博测试成长之路  阅读(1692)  评论(2编辑  收藏  举报