利用Nexus搭建Maven私服(一)

通过建立自己的私服,可以降低中央仓库负荷、节省外网带宽、加速maven构建、自己部署构件等,从而高效地使用maven。

有三种专门的Maven仓库可以帮助大家建立私服:Apache基金会的Archiva、JFrog的Artifactory和Sonatype的Nexus。这三种都是开源的,读者可以自由选择使用,下面我们介绍下当前最流行的maven仓库管理软件:Nexus。

Nexus分为开源版和专业版,以下是开源版的基本特性:

  • 较小的占用内存(最少仅为28MB)
  • 基于ExtJS的友好界面
  • 基于Restlet的完全REST API
  • 支持代理仓库、宿主仓库和仓库组
  • 基于文件系统,不需要数据库
  • 支持仓库索引和搜索
  • 支持从界面上传Maven构件
  • 细粒度的安全控制
Nexus专业版本是需要付费购买的,除了开源版本的特性外,它主要包含一些企业安全控制、发布流程控制等需要的特性。

安装Nexus

首先我们去官网http://nexus.sonatype.org/downloads/下载最新版本的Nexus,

download中在最下面下载zip包。解压,nexus-2.14.4-03\bin\jsw\windows-x86-32目录下,先执行install-nexus在执行start-nexus,启动完成后,就可以访问:http://localhost:8081/nexus/就能看到Nexus的界面如下:

Nexusy拥有全面的权限控制功能,默认的Nexus访问都是匿名的,而匿名用户仅包含一些最基本的权限,要全面学习和管理Nexus,就必须以管理员方式登录。可以单击右上角的Log In 进行登录,Nexus的默认管理员用户名和密码为admin/admiin123.如下:

Nexus的仓库与仓库组

作为Maven仓库服务软件,仓库自然是Nexus中最重要的概念。Nexus包含了各种类型的仓库概念,包括代理仓库、宿主仓库和仓库组等。每一种仓库都提供了丰富实用的配置参数,方便用户根据需要进行定制。

Nexus内置仓库

在具体介绍每一种类型的仓库之前,先浏览一下Nexus内置的一些仓库。单击界面左边导航栏中的Repositories连接,就能在界面右上角看到如下内容:
可这个列表已经包含了所有类型的Nexus仓库。从中可以看到仓库有四种类型:group(仓库组)、hosted(宿主)、proxy(代理)和virtual(虚拟)。每个仓库的格式为maven2或者maven1.此外,仓库还有一个属性为Policy(策略),表示该仓库为发布版本仓库还是快照版本仓库。最后两列的值为仓库的状态和路径。虚拟仓库是为了服务maven1格式,基本弃用,我们看看其他。
  • Maven Central:该仓库代理Maven中央仓库,其策略为Release,因此只会下载和缓存中央仓库中的发布版本构件
  • Releases:这是一个策略为Release的宿主类型仓库,用来部署组织内部的发布版本构件。
  • Snapshots:这是一个策略为Snapshot的shu宿主类型仓库,用来部署组织内部的快照版本构件。
  • 3rd party:这是一个策略为Release的宿主类型仓库,用来部署无法从公共仓库获得的第三方发布版本构件。
  • Apache Snapshots:这是一个策略为Snapshot的代理仓库,用来代理Apache Maven仓库的快照版本构件。
  • Codehaus Snapshots:这是一个策略为Snapshot的代理仓库,用来代理Codehaus Maven仓库的快照版本构件。
  • Google Code:这是一个策略为Release的代理仓库,用来代理Google Code Maven仓库的发布版本构件。
  • java.net-Maven2:这是一个策略为Release的代理仓库,用来代理java.netMaven仓库的发布版本构件。
  • Public Repositories:该仓库组将所有策略为Release的仓库聚合并通过一致的地址提供服务
  • Public Snapshot Repositories:该仓库组将上述所有策略为Snapshot的仓库聚合并通过一致的地址提供服务。
举一个简单的例子。假设某公司建立了Maven项目X,公司内部建立了Nexus私服,为所有Maven项目提供服务。项目X依赖于很多流行的开源类库如Junit等,这些构件都能从Maven中央仓库获得,因此cental代理仓库会被用来代理中央仓库的内容,并在私服上缓存下来,X还依赖于某个Google Code项目,其构件在中央仓库中不存在,只存在于Google Code仓库中,因此上述列表中的Google Code代理仓库会被用来代理并缓存这样的构件。X还依赖于Oracle的JDBC驱动,由于版权的因素,该类库无法从公共仓库获得,因此公司管理员将其部署到3rd paty中,供X使用。X的快照版本构建成功后,会被部署到Snapshots宿主仓库中,供其他项目使用。当X发布正式版本的时候,其构件会被部署到Release宿主仓库中。由于X用到了上述列表中的很多仓库,为每个仓库声明maven配置又比较麻烦,因此可以直接使用仓库组Public Repositories。当X需要Junit的时候,它直接从Public Repositories下载,Public Repositories会选择Maven Central提供实际的内容。

Nexus仓库分类的概念

下图直观地展示了宿主仓库、代理仓库和仓库组的概念:

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

创建Nexus宿主仓库

要创建一个宿主仓库,首先单击界面左边导航栏中的Repositories链接,在右边的面板中,选择Add,接着在下拉菜单中选择Hosted Repository,就会看到如下内容:

根据自己的需要填入仓库的ID和名称,下一字段Repository Type表示该仓库的类型。Provider用来确定该仓库的格式。一般来说,选择默认的Maven2 Repository。然后是Repository Policy,读者可以根据自己的需要来配置该仓库是发布版构件仓库还是快照版构件仓库。Default Local Storage Location表示该仓库的默认存储目录,图中该字段的值为空,待仓库创建好之后,该值就会成为基于sonatype-work的一个文件路径,如sonatype-work/nexus/storage/repository-id/,Override Local Storage Location可以用来配置自定义的仓库目录位置。
Deployment Policy用来配置该仓库的部署策略,选项有只读(禁止部署)、关闭重新部署(同一构件只能部署一次)以及允许重新部署。Allow File Browing表示允许浏览仓库内容,一般选true。每个仓库(包括代理仓库和仓库组)都有一个Browse Storage选项卡,用户以树形结构浏览仓库存储文件的内容,Include in Search表示是否对该仓库进行索引并提供搜索。Publish URL用来控制是否通过URL提供服务,如果选False,当访问该仓库的地址时,会得到HTTP 404 Not Found错误。配置最后的Not Found Cache TTL表示当一个文件没有找到后,缓存这一不存在信息的时间。以默认值1440分钟为例,如果某文件不存在,那么在之后的1440分钟里,如果Nexus再次得到该文件的请求,它将直接返回不存在信息,而不会查找文件系统。这么做是为了避免重复的文件查找操作以提高性能。

转载来源:https://blog.csdn.net/lz710117239/article/details/76099053

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值