ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Nexus是什么

2021-12-15 11:36:43  阅读:227  来源: 互联网

标签:nexus Nexus 什么 Maven 仓库 构件 远程


目录

一.简介

nexus是一个强大的maven仓库管理器,作用是代理远程仓库及部署第三方构件,它极大的简化了本地内部仓库的维护和外部仓库的访问。nexus是一套开箱即用的系统不需要数据库,它使用文件系统加Lucene来组织数据

Nexus 专业版是需要付费的,其开源版为 Nexus OSS。Nexus 提供两种安装包,一种是包含 Jetty 容器的 bundle 包,另一种是不包含容器的 war 包。

下载地址:http://www.sonatype.org/nexus/go。

nexus使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过IDEA和Eclipse集成使用,支持webDAV与LDAP安全身份认证,提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,占用较少的内存,基于简单文件系统而非数据库

二.好处

  1. 加速构建
  2. 节省带宽
  3. 节省中央maven仓库的带宽
  4. 稳定(应付一旦中央服务器出问题的情况)
  5. 控制和审计
  6. 能够部署第三方构件
  7. 可以建立本地内部仓库和公共仓库
  8. 开箱即用,不需要数据库
  9. 占用较少的内存,基于简单文件系统而非数据库

这些优点使得Nexus日趋成为最流行的Maven仓库管理器。

三.仓库

仓库分类

hosted 宿主仓库:主要用于部署无法从公共仓库获取的构件(如 oracle 的 JDBC 驱动)以及自己或第三方的项目构件
proxy 代理仓库:代理公共的远程仓库
virtual 虚拟仓库:用于适配 Maven 1
group 仓库组:Nexus 通过仓库组的概念统一管理多个仓库,这样我们在项目中直接请求仓库组即可请求到仓库组管理的多个仓库

1)Maven可直接从宿主仓库下载构件,也可以从代理仓库下载构件,而代理仓库间接的从远程仓库下载并缓存构件
2)为了方便,Maven可以从仓库组下载构件,而仓库组并没有时间的内容(下图中用虚线表示,它会转向包含的宿主仓库或者代理仓库获得实际构件的内容)

所有仓库在本地都会有一个文件夹存放各自缓存的jar!

Nexus默认内置的仓库

Nexus 可能内置了如下仓库(不同版本可能不同):

  • Maven Central :代理 Maven 的中央仓库,策略为 release
  • Releases :策略为 Release的宿主类仓库,用来部署组织内部的 release 版本构件 Snapshots :策略为 Snapshot的宿主类仓库,用来部署组织内部的 release 版本构件
  • 3rd party :策略为 Release的宿主类仓库,用来部署无法从公共仓库获得的第三方 release 版构件。
  • Apache Snapshots :代理 Apache Maven 仓库,策略为Snapshot
  • Codehaus Snapshots :代理 Codehaus Maven 仓库,策略为Snapshot
  • Google Code :代理 Google Code Maven 仓库,策略为 Release
  • Java.net – Maven 2 :代理 Java.net Maven 仓库,策略为Release
  • Public Repositories :将上述策略为 Release 的仓库聚合并通过一致的地址提供服务。
  • Public Snapshot Repositories :将上述策略为 Snapshot 的仓库聚合并通过一致的地址提供服务。

各类仓库配置详解

** Hosted仓库**
创建 Nexus 宿主仓库时,仓库会默认地存放在 sonatype-work/nexus/storage/[repository-id]/ 下,也可以填写 Override Local Storage Location 自定义仓库的存储路径。同时可以设置以下选项:

  • Deployment Policy :只读(禁止部署)、关闭多次部署(同一构件只能部署一次)或允许多次部署。
  • Allow File Browser :设置是否允许在 Repository 的 Browse Storage 选项卡中浏览仓库。
  • Include in Search :设置是否对该仓库进行索引并暴露给搜索。
  • Publish URL :设置是否通过 URL 提供服务,如为 false ,访问该仓库的地址时会得到 404
  • Not Found Cache TTL :缓存未找到文件信息的时间(此时间内不再去找,直接返回没找到)

Proxy仓库
创建 Nexus 代理仓库时,除了设置远程仓库的地址和认证信息外,还可以设置以下选项:

  • Download Remote Indexes :设置是否下载远程仓库的索引。(下载远程仓库的索引后,即使没有缓存远程仓库的构件,用户依然能搜索或浏览构件的基本信息)
  • Checksum Policy :设置校验和出错时,是忽略、记录警告信息还是拒绝下载。
  • Artifact Max Age :设置多久更新一次 Artifact (对于策略为 release 的仓库,可以设置为 -1 ,也就是永不更新)
  • Metadata Max Age :设置多久更新一次 metadata 。

Public仓库
仓库策略分为 release 与 snapshot,一般用在 proxy仓库 和 hosted仓库,分别表示发布版和快照版。而仓库组没有 Release 和 Snapshot 的区别,创建时会让用户选择由哪些宿主仓库或代理仓库构成。仓库组所包含的仓库的顺序决定了仓库组遍历它们的次序,所以最好将常用的仓库放在前面。

四.Nexus的索引

Nexus 通过维护仓库的索引来提供搜索功能。

远程索引:这里只针对代理仓库,其他仓库不存在远程索引一说。配置好远程仓库后,搜索时仍然是不能搜到远程仓库的任意文件的。为了能搜索到远程仓库的所有文件,我们需要开启 Nexus 中的代理仓库下载远程索引(默认这个设置是关闭的)。
只要远程仓库提供 nexus-indexer 形式的索引, Nexus 就可以下载它的索引。这样在你搜索时,无论私服本地是否存在相应文件,都能被搜索到,然后项目引用时,nexus会去远程仓库下载,并缓存在本地。

Hosted仓库: Nexus 也可以对宿主仓库和代理仓库进行索引。仓库有了索引之后,可以在其 Browse Index 选项卡中浏览仓库内容的树形结构。

五.目录结构

配置文件:nexus/conf/nexus.properties
仓库目录:nexus/sonatype-work

根目录

  • nexus-3.5.2-01 安装目录
  • sonatype-work\nexus3 数据文档

nexus-3.5.2-01 目录

  • bin 包含nexus的启动脚本和相关配置
  • etc jetty、karaf等配置文件
  • jre jre环境
  • lib java架包库
  • public 关于nexus应用在本地跑起来所需要的资源
  • system 应用所有的插件和组件
  • LICENSE.txt 和 NOTICE.txt 版权声明和法律细则

sonatype-work\nexus3 目录

  • blobs/ 创建blob的默认路径,当然也可以重新指定
  • cache/ 当前缓存的karaf包的信息
  • db/ OrientDB数据库的数据,用于存储nexus的元数据的数据库
  • elasticsearch/ 当前配置的Elasticsearch状态
  • etc/ 大概是运行时配置状态和关于资源库的自定义的相关的东西
  • health-check/ 看目录,健康检查的相关报告的存储目录吧
  • keystores/ 自动生成的关于资源库的ID主键
  • log/ 运行实例生成的日志文件,也有日志文件的压缩包,貌似是每天都会生成日志文件,你可以定期删除老的日志文件
  • tmp/ 用于存储临时文件的目录

具体每个目录下的各个配置文件的作用,还可参考官方文档说明:https://help.sonatype.com/display/NXRM3/Installation

六.版本比较

目前Nexus已升级到3.x,简单做下浅显比较:

  • 3.x版本界面漂亮
  • 3.x对于jar的本地缓存不再是像2.x一样,直接保存单个jar包,而是采用Blob Stores保存,即一个jar被保存为单bytes文件。因此将没法使用:直接批量扔jar,再手动更新这种方式。
  • 相比2.x,自带JAVA环境,安装方便
  • 支持管理Docker
  • 支持npm和bower的package管理
  • 不能再像2.x一样,点击相关jar后含有出现,方便复制粘贴

标签:nexus,Nexus,什么,Maven,仓库,构件,远程
来源: https://www.cnblogs.com/rxysg/p/15691881.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有