前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Nexus是什么(上)

Nexus是什么(上)

原创
作者头像
陈不成i
修改2021-06-24 18:04:58
修改2021-06-24 18:04:58
6.1K0
举报
文章被收录于专栏:ops技术分享ops技术分享

一.简介

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 的区别,创建时会让用户选择由哪些宿主仓库或代理仓库构成。仓库组所包含的仓库的顺序决定了仓库组遍历它们的次序,所以最好将常用的仓库放在前面。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.简介
  • 二.好处
  • 三.仓库
    • 仓库分类
    • Nexus默认内置的仓库
    • 各类仓库配置详解
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档