设为首页 收藏本站
查看: 1388|回复: 0

[经验分享] DevOps之nexus

[复制链接]

尚未签到

发表于 2019-4-17 14:47:32 | 显示全部楼层 |阅读模式

一、Nexus的介绍

   1.私服的介绍

  私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建.有了私服之后,当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,并回车。

看到如上界面,表示启动成功,localhost:8081 访问nexus界面。

2.Nexus web界面的功能介绍
  (1) 创建用户


    (2) 查看nexus的系统信息

    (3) nexus仓库概念介绍

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。

      (4) Search
    就是类似Maven仓库上的搜索功能,就是从私服上查找是否有哪些包。
    支持模糊查询。

    可以进入具体的目录进行详细查询:

      (5) broswe

    查看具体的仓库下有哪些jar,可以点击连接进入其目录查看:


    3. Nexus系统配置
      (1)Blob Stores
    文件存储的地方,创建一个目录的话,对应文件系统的一个目录,如图所示:

      (2)Repositories

    点击创建之后,可以看到有各种类型的仓库:

    上面介绍了不同类型的仓库的作用:
       Proxy:这里就是代理的意思,代理中央Maven仓库,当PC访问中央库的时候,先通过Proxy下载到Nexus仓库,然后再从Nexus仓库下载到PC本地。
       值得注意的是:在创建proxy类型的仓库时,需要注意以下几个参数配置:



    Name:就是为代理起个名字
    Remote Storage: 代理的地址,Maven中央仓库的地址为: https://repo1.maven.org/maven2/
    Blob Store: 选择代理下载包的存放路径

       Hosted:Hosted是宿主机的意思,就是怎么把第三方的Jar放到私服上。
       值得注意的是:



Name:就是为hostsed起个名字。
Hosted有三种方式:已经发布(Releases)、未发布(Snapshot)、混合(Mixed)。
Deployment Pollcy:需要把策略改成“Allow redeploy”。

三、Nexus3搭建Maven私有库
 这里分为两个步骤:一是将自己编写的程序部署到nexus中,二是将私有仓库中的依赖,应用到本地。
  (1)本地引用私服仓库的依赖:
   首先我们在使用私服的时候,配置的仓库为maven-public,因为这里集成了三个仓库:

所以我们在maven项目中的pom中需要加入以下内容:





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

true


true






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

true


true



  注意:这里的URL在nexus界面中的具体仓库中复制

但是这样的话之后本项目才能使用上面的仓库,如果想所有的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中都有:

随便任意点击一个:

最后点击upload即可。

在相应的库中就可以找到,如果想在自己的maven中使用它,就可以根据上一节的配置,
这里注意:依赖的查看点击 :

这样我们就可以引用第三方的jar包,在自己的项目中使用!!!




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-828225-1-1.html 上篇帖子: Devops实践:运作模式 下篇帖子: DevOps之harbor
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表