本文适用范围:用户规模不大,不须要考虑maven仓库负载均衡的群体。html
为什么部署nexus3git
以前因为懒某些缘由,全部开发人员本身定义.m2的settings,大多使用ali提供的maven仓库,可是最近发现这样作有必定的问题:docker
一、有几天aliyun的服务不大稳定,不论是maven仓库仍是alidns都连不上;windows
二、若是换回maven central下载jar包会偏慢;bash
三、即便aliyun服务稳定,可是有些jar包没有,若是单纯把本地central改成aliyun服务会致使有些pom文件中的依赖下载不了;服务器
固然,上述3点其实也还好,毕竟换回central只是慢了点而已- -虽然是每一个人都慢了点。负载均衡
可是最近有个需求还挺明显的:咱们这有一些本身编写本身用的基础库,这类基础库还会常常更新,如今有个工程须要引用这些包。把jar包加到新工程并用git同步的话每次更新都要打jar包而且拷到新工程下,很差区分jar包版本,其次是若是使用windows的eclipse开发工程,更新jar包会出问题,eclipse打开时会把依赖的jar打开,此时更新jar包会失败。并且失败后有时会出现奇怪的git问题。eclipse
因此决定部署nexus3,优势很明显,经过统一的本地服务器下载jar包,多人开发不会重复下载,一是下降central压力二是节约下载jar包时间;服务稳定,本身的服务器总不能说连不上就连不上了,就算外网崩了只要服务器上有jar包maven服务就依旧可用;能够自定义jar包了!不用每次还得把本身的基础库pom文件内容拷贝到新工程了,引用本身的基础库dependencies里就会把依赖的全部jar包都加进来,并且不用担忧windows用eclipse开发git同步代码时报错。maven
超快速部署nexus3性能
emmmmm.....思考了一下,直接拉docker镜像显而易见是最简单的部署方式,性能足够,不会修改本地环境,而且这样作还有一个好处是若是之后须要进行负载均衡能够较为方便的迁移到k8s上。那么开始:
dockerhub官方镜像:https://hub.docker.com/r/sonatype/nexus3/
拉取命令:
见http://www.javashuo.com/article/p-osluwdxb-kp.html,此镜像在我这里被植入了挖矿程序,本人历来未exec -it或者使用其余命令修改此镜像建立的container,只是从mvn repositories中加入了热门的仓库站,并添加了个用户,这样还出问题很难相信不是image的问题。如今建议经过本博客提供的自建image方式本身建立maven仓库。
执行命令:
$ docker volume create --name nexus-data $ docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data my-nexus3
等待10分钟,部署完成!
事实证实,经过官方下载的tar包部署的nexus3私服根本不须要这么久时间进行部署,仅仅须要约半分钟便可部署完成,系统启动状态能够经过docker logs containerID来查看,官方提供的版本约半分钟便可started。
解释与说明
上面确实是部署完成了,可是总要说一下注意事项和为何这样就部署完成了:
首先拉个镜像回来,而后咱们建立了一个volume,这个至关于底层存储,这样作的好处是即便咱们的nexus container某些缘由坏掉了,可是咱们的的底层数据:如曾经下过的jar包和pom文件,nexus组件升级补丁啥都都还在。从新用image建立一个container继续挂载在此文件夹下就ok了。
而后说为啥要等个10分钟,这是有缘由的,nexus启动后会检测nexus component版本,而后进行升级,在升级过程当中若是被打断会出bug,例如我本身部署的时候习惯先不加-d(总以为并不能一次部署成功),等了几分钟看差很少时ctrl+c打断掉再建立一个-d的container正式运行,可是因为咱们存储挂载在volume上的,未完成的升级也在那个文件夹下,因此部署的时候仍是会报错,找了很久问题发现应该删掉volume从新建一个空白的,加载空白volume就一切正常了。
nexus3配置
这步其实还挺重要的,咱们一点一点来看,首先登录系统界面:IP:8081,点击上面的设置按钮(那个齿轮)
点击repositories
能够看到这是个人一个仓库页面,里面除了一些默认的仓库之外,额外添加了许多新仓库:
先说本地仓库:
maven-releases:管理本地jar包的东西,release版,须要上传本身的jar包时release上传到这个仓库。
maven-snapshots:管理本地jar包的东西,snapshot版,须要上传本身的jar包时snapshot上传到这个仓库。
maven-public:能够用来整合多个仓库源,在.m2/中的settings能够把central源设置成这个玩意。
maven-central:看起来是central其实并非咱们经常使用的那个central,因此我又加了一个central源表明真正的central。
知道这几个默认仓库有啥用了并不能真正进行使用,咱们还须要加入其余源,否则有些jar包找不到,照着下面设置就行,version policy不知道选啥就用release,须要用snapshot选mixed:
至于加入哪些源,建议把以下都加上,若是以为再加个国内的那就再加个ali的:
而后选择maven-public,在里面的group项内把建立好的全部源都拖到group里,而后看心情调整一下顺序就能够了。访问时在.m2/文件中把central源改成public这个便可,如:
<mirrors> <mirror> <id>nexus</id> <name>private maven</name> <url>http://192.168.xxx.xxx:18081/repository/maven-public/</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors>