黄智勇 发表于 2019-4-17 14:47:32

DevOps之nexus

https://s1.运维网.com/images/blog/201903/30/878aa94c7aff768216cf3a2f69bc1fbd.png
一、Nexus的介绍
   1.私服的介绍
https://s1.运维网.com/images/blog/201903/30/1a4032ba8340193f805f203e5e10fd2a.png
  私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建.有了私服之后,当maven需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,在提供给本地仓库下载。
 2.Nexus的介绍
  Nexus是Maven仓库管理器,也可以叫Maven的私服。Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问和部署在你所维护仓库中的每个Artifact。Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。
 3.Nexus的优势
   节省外网带宽:大量对于外部仓库的重复请求会消耗带宽,利用私服代理外部仓库,可以消除对外的重复构件下载,降低带宽的压力。
   加速maven的构建:不停地连接请求外部仓库十分的耗时,Maven在执行构建的时候不停地检查远程仓库的数据。利用私服,Maven只检查局域网的数据,提高构建的速度。
   部署第三方构建:当某个构件无法从任何一个外部远程仓库获得。建立私服之后,便可以将这些构件部署到私服,供内部的Maven项目使用。
   提高稳定性增强控制: Maven构建高度依赖于远程仓库,因此,当网络不稳定的时候,Maven构建也会变得不稳定,甚至无法构建。私服缓存了大量构建,即使暂时没有网络,Maven也可以正常的运行。
   降低中央仓库的负荷:使用私服可以避免很多对中央仓库的重复下载,降低中央仓库的压力。

二、Nexus的安装和功能介绍
 1.Nexus的安装
下载地址:https://www.sonatype.com/download-oss-sonatype?hsCtaTracking=920dd7b5-7ef3-47fe-9600-10fecad8aa32%7Cf59d5f10-099f-4c66-a622-0254373f4a92(这里我选择是3.x,Windows版本) nexus-3.15.2-01-win64.zip
解压之后,其中有几个重要的目录文件:
   etc目录下nexus-default.properties文件可配置默认端口和host及访问根目录。
   bin目录,按住Shift键右键鼠标,选择“在此处打开命令窗口”,安装服务nexus.exe /install,卸载服务nexus.exe /uninstall,运行命令:nexus.exe /run
   bin目录下nexus.vmoptions文件,适当调整内存参数,防止占用内存太大
安装服务之后,在cmd下进入nexus的bin目录,执行命令:nexus.exe/run,并回车。
https://s1.运维网.com/images/blog/201903/30/efbf7043fbca4898febfc56488cac69e.png
看到如上界面,表示启动成功,localhost:8081 访问nexus界面。

 2.Nexus web界面的功能介绍
  (1) 创建用户
https://s1.运维网.com/images/blog/201903/30/cb0e00642183f6d30aa511d2cc46fcc9.png
https://s1.运维网.com/images/blog/201903/30/0d93c027bcde3ff29e653660ae7a507d.png
    (2) 查看nexus的系统信息
https://s1.运维网.com/images/blog/201903/30/249059bd49c58b139f42cc7f127326a5.png
    (3) nexus仓库概念介绍
https://s1.运维网.com/images/blog/201903/30/015f1a0ed03b85464417403c7318779a.png
Name:


[*]maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar
[*]maven-releases:私库发行版jar
[*]maven-snapshots:私库快照(调试版本)jar
[*]maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。
Type:
[*]group(仓库组类型):又叫组仓库,用于方便开发人员自己设定的仓库
[*]hosted(宿主类型):内部项目的发布仓库(内部开发人员,发布上去存放的仓库)
[*]proxy(代理类型):从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage Location属性的值即被代理的远程仓库的路径);
Public Repositories下的仓库 :
[*]3rd party: 无法从公共仓库获得的第三方发布版本的构件仓库,即第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去
[*]Apache Snapshots: 用了代理ApacheMaven仓库快照版本的构件仓库
[*]Central: 用来代理maven中央仓库中发布版本构件的仓库
[*]Releases: 内部的模块中release模块的发布仓库,用来部署管理内部的发布版本构件的宿主类型仓库;release是发布版本
[*]Snapshots:发布内部的SNAPSHOT模块的仓库,用来部署管理内部的快照版本构件的宿主类型仓库;snapshots是快照版本,也就是不稳定版本
所以:自定义构建的仓库组代理仓库的顺序为:Releases,Snapshots,3rd party,Central。
https://s1.运维网.com/images/blog/201903/30/59413dde68555b627a8608ec00a40401.png
  (4) Search
就是类似Maven仓库上的搜索功能,就是从私服上查找是否有哪些包。
支持模糊查询。
https://s1.运维网.com/images/blog/201903/30/b63b643888c5a9c2e6bf22d788360c69.png
可以进入具体的目录进行详细查询:
https://s1.运维网.com/images/blog/201903/30/8c2f5f31a821e8d7b7bb0c29744b56ff.png
  (5) broswe
https://s1.运维网.com/images/blog/201903/30/9ad2662261f49e15152217334286011a.png
查看具体的仓库下有哪些jar,可以点击连接进入其目录查看:
https://s1.运维网.com/images/blog/201903/30/9c9b4c43079e050b418c13c8d3317205.png

 3. Nexus系统配置
  (1)Blob Stores
文件存储的地方,创建一个目录的话,对应文件系统的一个目录,如图所示:
https://s1.运维网.com/images/blog/201903/30/7f7768e591e4be43678184f805c0133c.png
  (2)Repositories
https://s1.运维网.com/images/blog/201903/30/2586e84a60fd5ea72f09de2d83aee42f.png
点击创建之后,可以看到有各种类型的仓库:
https://s1.运维网.com/images/blog/201903/30/231b0a99cd254bead5b6a1ca08fccc0d.png
上面介绍了不同类型的仓库的作用:
   Proxy:这里就是代理的意思,代理中央Maven仓库,当PC访问中央库的时候,先通过Proxy下载到Nexus仓库,然后再从Nexus仓库下载到PC本地。
   值得注意的是:在创建proxy类型的仓库时,需要注意以下几个参数配置:
https://s1.运维网.com/images/blog/201903/30/caa55df9bbf0e0dc4eb968c5b3fed4f3.png
https://s1.运维网.com/images/blog/201903/30/ce8382e8c3f9b85c2e5472ab89223a1b.png
https://s1.运维网.com/images/blog/201903/30/b1a8a57f1d13d6ea6faef740ee61fbf5.png
Name:就是为代理起个名字
Remote Storage: 代理的地址,Maven中央仓库的地址为: https://repo1.maven.org/maven2/
Blob Store: 选择代理下载包的存放路径

   Hosted:Hosted是宿主机的意思,就是怎么把第三方的Jar放到私服上。
   值得注意的是:
https://s1.运维网.com/images/blog/201903/30/95efe92e8f014567cdfc6a0e1f5aee18.png
https://s1.运维网.com/images/blog/201903/30/4f0ec5584a110a3d69169ddc871a77a2.png
https://s1.运维网.com/images/blog/201903/30/9425ee441a6675241f5ccf57f7e8674d.png
Name:就是为hostsed起个名字。
Hosted有三种方式:已经发布(Releases)、未发布(Snapshot)、混合(Mixed)。
Deployment Pollcy:需要把策略改成“Allow redeploy”。

三、Nexus3搭建Maven私有库
 这里分为两个步骤:一是将自己编写的程序部署到nexus中,二是将私有仓库中的依赖,应用到本地。
  (1)本地引用私服仓库的依赖:
   首先我们在使用私服的时候,配置的仓库为maven-public,因为这里集成了三个仓库:
https://s1.运维网.com/images/blog/201903/30/952e3daea406f6e9032e5db8ec588fab.png
所以我们在maven项目中的pom中需要加入以下内容:




nexus
nexus
http://localhost:8081/repository/maven-public/

true


true






nexus
nexus
http://localhost:8081/repository/maven-public/

true


true



  注意:这里的URL在nexus界面中的具体仓库中复制
https://s1.运维网.com/images/blog/201903/30/adc0fd237426055e02fed0dd6b089fbe.png
但是这样的话之后本项目才能使用上面的仓库,如果想所有的maven项目都可以使用以上的仓库,就需要配置maven的setting.xml文件:(这里的maven是本地的)





central
central
http://localhost:8081/repository/maven-central/
true
true




   
central      

注意:这里的URL是需要使用的仓库的URL。
    (2)将开发的程序,部署到nexus中

#首先在pom文件中设置需要部署到的仓库


user-release
User Project Release
http://localhost:8081/repository/maven-releases/


user-snapshots
User Project SNAPSHOTS
http://localhost:8081/repository/maven-snapshots/


#然后配置权限在settings.xml:
   
user-release   
admin   
admin123   

   
user-snapshots   
admin   
admin123   

注意:这里的id名称要和pom文件中的distributionManagement—> repository下的一致。
  之后,你在将maven项目,clean deploy后,就能在自己搭建的私服中看见刚刚打包的项目,并且,能在pom中配置依赖,将自己的打包的项目,导入其他的项目中。
    (3) 宿主库的部署
就是怎么把第三方的Jar放到私服上。
首先在nexus中找到相应的hosted类型的仓库:
在Upload中都有:
https://s1.运维网.com/images/blog/201903/30/519aa2e624fd8842e60ed9d6a8b46966.png
随便任意点击一个:
https://s1.运维网.com/images/blog/201903/30/4161fca94c64e7316cc7d09b214e114f.png
最后点击upload即可。
https://s1.运维网.com/images/blog/201903/30/64f63689d97c4a9d0c00b934051441e8.png
在相应的库中就可以找到,如果想在自己的maven中使用它,就可以根据上一节的配置,
这里注意:依赖的查看点击 :https://s1.运维网.com/images/blog/201903/30/1c9d5427743ef99166bd0852568ca2a8.png
https://s1.运维网.com/images/blog/201903/30/5bf7ab43bfe49947107e301641b3106b.png
这样我们就可以引用第三方的jar包,在自己的项目中使用!!!



页: [1]
查看完整版本: DevOps之nexus