Nexus仓库简介

Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库,以节省带宽和时间,Nexus就可以满足这样的需要。此外,他还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,它占用较少的内存,基于简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven仓库管理器

Nexus下载和安装

Nexus提供了两种安装方式,第一种是内嵌Jetty的bundle,解压到安装目录中就能直接运行;第二种方式是WAR,将其发布到web容器中即可使用。Nexus要求jdk版本为1.7(若版本不对,请调整环境变量JAVA_HOME指向jdk1.7的目录,

建议安装2.0以上版本bundle版本)。

本项目选择的是第一种安装方式,下载完nexus之后,将压缩包解压到你想要安装的目录即可。解压完成后,会得到如下两个子目录(例如Nexus版本为2.7.0):

l nexus-2.7.0-06/:该目录包含了Nexus运行所需要的文件,如启动脚本,依赖jar包等。

l sonatype-work/:该目录包含了Nexus生成的配置文件,日志文件,仓库文件等。

用户只需调用对应操作系统的脚本就可以启动Nexus,本文主要介绍主流的Windows和Linux平台上的启动方式,详细信息如下:

Ø Windows系统:

1. 用户需要进入到nexus-2.7.0-06/bin/jsw/目录,根据操作系统类型选择文件夹,进入后双击里面的console-nexus.bat启动Nexus 。要停止服务,可以在命令行按:Ctrl+C键。例如,Win7 64位系统,选择windows-x86-64中的console-nexus.bat启动Nexus。

2. 在nexus-2.7.0-06/bin/jsw/windows-x86-64中还有其他的一些脚本:

² install-nexus.bat:将Nexus安装成Windows服务;

² uninstall-nexus.bat:卸载Nexus

Windows服务;

² start-nexus.bat:启动Nexus

Windows服务;

² stop-nexus.bat:停止Nexus

Windows服务;

Ø Linux系统:

1. 用户需要进入到nexus-2.7.0-06/bin/jsw/目录,根据操作系统类型选择文件夹,进入后然后运行如下命令:$ ./nexus console。如果需要停止Nexus,可以使用Ctrl+C 键。例如:Ubuntu32位系统,只需进入到nexus-2.7.0-06/bin/jsw/linux-x86-32/,然后运行上面的命令即可。

2. 除console之外,Nexus的Linux脚本还提供如下的命令:

² ./nexus start:启动后台Neuxs服务;

² ./nexus stop:停止后台Neuxs服务;

² ./nexus status:查看后台Nexus服务的状态;

² ./nexus restart:重新启动后台Nexus服务;

启动完毕后,可以访问Nexus系统,访问地址:http://localhost:8081/nexus/,默认用户名/密码:admin/admin123。

关于Bundle安装的一个常见问题是端口冲突。Nexus Bundle默认端口是8081,若端口已被占用或希望使用其他端口开放Nexus服务,可以编辑文件nexus-2.7.0-06/conf/nexus.properties,找到属性application-port将默认值8081改成其他端口号,然后保存该文件,重启Nexus即可。

Nexus仓库初始页面,如下图所示:

仓库简介和配置

Nexus目录结构

Nexus仓库初始页面如上图所示,主要信息如下:

一、

左侧包含多个菜单,主要使用有以下两个菜单:

1、

“Repositories”,点击后显示所包含的所有仓库信息;

2、

“Advanced Search”,点击后进入搜索页面,可根据关键字搜索jar等;

二、

点击“Repositories”后,显示所有的仓库信息,仓库类型包含:

l Hosted:本地仓库,可部署自己的构件到这类型的仓库。比如公司的第二方库;

l Proxy:代理仓库,被用来代理远程的公共仓库,如maven中央仓库;

l Group:仓库组,用来合并多个hosted/proxy仓库,当项目需要引用多个repository资源时,只需要将这些资源放到一个group中,引用这一个group即可;

三、

Nexus中自带的仓库:

1)

Maven central是Maven的中央仓库;

2)

central是一个代理仓库;

3)

Releases是用来存放自己项目中发布的构建, 通常是Release版本的;

4)

Snapshots是发布那些非release版本, 非稳定版本;

5)

3rd Party是一个第三方库,可以添加自己的第三方库;

四、

Maven 仓库组:

仓库组,即将多个仓库划分组管理。当需要引用多个仓库时候,若将这些仓库加入到一个仓库组中,那么在setting.xml中,只需要引用这个仓库组即可。

Nexus中预设了2个仓库组:public repositories和public snapshot repositories。仓库组默认包含本地仓库Releases,

snapshots, 3rd party和代理仓库Maven Central。可在Configuration配置页添加仓库到这个仓库组。

在Maven 中使用Nexus

为了能让本机所有的Maven项目都使用Nexus本地仓库,需要对settings.xml文件进行修改,但setting.xml并不支持直接配置repositories和pluginRepositories,因此需要使用Maven提供的Profile机制,将仓库配置放到setting.xml中的Profile中。代码清单如下:

该配置中使用了一个id为repository-local的profile,这个profile包含了相关的仓库配置,同时配置中又使用activeProfile元素将repository-local这个profile激活,这样当执行maven构建的时候,激活后的profile会将仓库配置应用到项目中去。repositories和pluginRepositories标签分别是仓库及插件仓库配置,它们的id都为nexus,url指向仓库访问地址,如下图所示。配置仓库及插件仓库的目的是开启对快照版本下载的支持,当maven需要下载发布版或快照版构件的时候,它会首先检查nexus,看该类型的构件是否支持。

Setting.mxl配置参数中的仓库访问url

在项目中使用nexus查找依赖包

在项目中需要查找nexus仓库中的jar包,步骤如下:

Ø 登陆到nexus的web管理页面,选择左侧的“Advanced

Search”进入到搜索页面,如下图:

Ø 在上图中的搜索框中,输入jar包的名称,点击搜索,会列出查询结果列表,选择某一个结果,则会在最下面显示它的具体信息,如下图:

Ø 选到自己所需的jar后,选择上图右下角区域的tab选项“Maven”按钮,将XML对应的文本框内容复制粘贴到项目的pom.xml文件中< dependencies> dependencies>标签中即可。如下图:

部署编译完成的jar到Nexus仓库

在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,这时可以利用Nexus对不同状态的版本进行管理。Nexus仓库包含两种,snapshot快照仓库和release发布仓库。snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本。

项目中使用maven过程中,maven2会根据模块的版本号(pom文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本。如果是快照版本,那么在 mvn

deploy时会自动发布到快照版本库中;如果是正式发布版本,那么在mvn deploy时会自动发布到正式版本库中。

具体操作步骤如下:

1.

在maven的setting.xml增加认证信息,认证信息包含:对应仓库的id,登录用户名/密码,如下图:

2.

在项目的pom.xml增加认证信息,认证信息包含:对应仓库的id,name,url,注:server

的id要与repository的id保持一致。如下图:

3.

修改好配置后,执行下maven的 deploy 即可把新的 jar 部署到Nexus上。

新建仓库

根据项目的需求,可自定义多个仓库。操作步骤如下:

1)

点击“Repositories”进入仓库信息页面,显示所有的仓库信息,同时可对仓库进行新增、删除、更新索引、修改信息等操作。如下图:

2)

点击“+”号按钮,选择仓库类型:group,新增public-maven-plugin-repositories仓库,填写配置参数,然后点击保存即可。具体配置信息如下:

3)

点击“+”号按钮,选择仓库类型:hosted,新增maven-plugins仓库,填写配置参数,然后点击保存即可。具体配置信息如下:

添加第三方插件

添加第三方jar包和maven插件文件有两种方式:

1:通过web系统的管理界面添加;

2:直接拷贝文件夹放到对应的Nexus仓库的文件中;

通过web系统的管理界面添加

通过Nexus系统界面,向3rd Party第三方仓库添加jar包,具体步骤如下:

1、

点击“Repositories”进入仓库信息显示页面,选中“3rd Party”,并在最下面的Tab框中选择“Artifact Upload”,显示页面如下:

2、

在上图所示的页面中,需要进行以下操作:

第一步,“GAV Defintion”下拉框选择:“GAV Parameters”;

第二步,输入group(分组id,如com.anxin)

artifact(唯一标识,不可重复) version(版本号) 等信息,也可以直接点击Select Atrifact(s) to Upload…按钮,那么这三个信息会默认为jar包的原始信息(但要勾选 Auto Guess)。

第三步,点击“Select Atrifact(s)

to Upload…”按钮,将所需要上传的jar包上传到本系统,当上传完毕后,会自动填充Filename,Classifiler,Extension三个输入框;

第四步, 点击“Add Atrifact”按钮,会生成信息填充到Atrifact文本框中,如下图所示:

第五步,点击“Upload Atrifact(s)”按钮,上传jar包到第三方库。

拷贝文件的方式

Maven插件文件

Nexus中用来存放第三方jar包的仓库是thirdparty仓库,若Nexus安装路径为:

/Users/choice/developTools/nexus/nexus-2.14.3-02-bundle

则thirdparty仓库所在的文件路径:

/Users/choice/developTools/nexus/nexus-2.14.3-02-bundle/sonatype-work/nexus/storage/thirdparty

由于每个maven插件都有唯一的坐标信息,因此插件文件需要严格按照自己的坐标信息来选择对应的文件目录存放。maven插件的完整存放路径为:thirdparty仓库文件目录 / 插件坐标信息对应的文件目录。

例如,上传maven-scm-plugin插件,具体的操作步骤如下:

1.

查看maven-scm-plugin插件的坐标信息,打开maven-scm-plugin文件夹并选择进入1.7文件夹(1.7表示:该插件的1.7版本,若存在多个版本,任意选择一个打开进入即可),然后查看里面的maven-scm-plugin-1.7.pom文件。该pom文件中包含有插件的坐标信息,如groupId,artifactId,version等信息。查看插件坐标信息的操作如下图所示:

2.

使用文本编辑器打开maven-scm-plugin-1.7.pom,找到/project/groupId的属性值,该属性值信息与插件的存放目录相映射。例如:maven-scm-plugin插件的groupId的属性值为:org.apache.maven.plugins,则对应的文件存放目录:org/apache/maven/plugins/,那么该插件的完整存放路径为:

/Users/choice/developTools/nexus/nexus-2.14.3-02-bundle/sonatype-work/nexus/storage /maven_plugins/org/apache/maven/plugins/

pom.xml中的信息如图所示:

3.

根据第2步操作得到的插件文件存放路径,进入并打开该路径下的最后一层文件夹。若不存在该文件夹,则需要按照该路径的目录层级结构手动创建缺少的目录文件。该路径下的最后一层文件夹信息如下图所示:

4.

将需要上传的插件:maven-scm-plugin整个文件夹内容全部拷贝到第3步操作所打开的文件夹中。若插件文件已存在,则选择合并文件夹操作。插件文件上传完毕后,需要更新Nexus的索引信息,具体操作参考2.2.3。

jar文件

nexus仓库存放jar文件的路径,例如安装路径为

/Users/choice/developTools/nexus/nexus-2.14.3-02-bundle

则存放jar文件的路径如下:

/Users/choice/developTools/nexus/nexus-2.14.3-02-bundle/sonatype-work/nexus/storage /thirdparty/

进入到以上的目录文件中后,将需要上传的jar文件拷贝进去即可。(注意:尽量不要将 plugins文件复制进去)

更新索引

将所有的maven插件文件和jar文件都复制完毕后,需要更新仓库的索引信息。登陆Nexus仓库的Web系统,点击“Repositories”进入所有仓库信息,进行以下两部操作:

1.

选中“3rd party”,选择最下面的Tab选项框中的“Browse Storge”点击“”按钮,选择“Browse Index”点击“”按钮,如图所示:

2.

选中“public-maven-plugin-repository”和“public-repository”仓库,分别右键点击“Repair Index”和“Update Index”,如图所示:

查看上传的文件

待第三方文件上传完毕后,可以到搜索界面,搜索刚上传的第三方文件,查看名称和版本是否正确,如下图所示:

仓库移植

·

将原有nexus仓库中的工作目录(sonatype-work)全量copy

·

在新创建的nexus仓库中创建与原有仓库相同类型的仓库(只创建想要移植的仓库)

·

将copy出来的工作目录 sonatype-work/nexus/storage 目录中的仓库缓存copy对应的新的工作区目录。

·

将copy出来的sonatype-work下的indexer目录中的索引文件同样方式替换到新工作区对应目录。

Nexus的访问权限模型

Nexus是基于权限做访问控制的,服务器的每一个资源都有对应的权限来控制,因此用户执行特定的操作时就必须拥有必要的权限。管理员必须以角色的方式将权限赋予Nexus用户。用户可以被赋予一个或者多个角色,角色可以包含一个或多个权限,角色还可以包含一个或者多个其他角色。

修改nexus的密码

修改用户需要当前登录的用户要有配置权限,然后点击User

会出现用户列表 如上图;鼠标右键点击你要更改的用户 如下图

上图中有两个选项,Reset Password(重置密码),Set Password(设置密码),

这里点击 set password。不要点击 reset,因为 reset 密码时自动生成的,具体是什么 我们也不知道

Nexus上预定义了三个用户

用admin登录后,单击页面左边的User链接,看到如下图列表:

admin:该用户拥有Nexus的全部权限,默认密码为admin123。

deployment:该用户能够访问Nexus,浏览仓库内容、搜索、上传部署构件,但是不能对Nexus进行任何配置,默认密码为deployment123。

anonymous:该用户对应了所有未登录的匿名用户,它们可以浏览仓库并进行搜索。

Nexus预定义了一些常用且重要的角色

UI:Basic UI

Privileges:包含了访问Nexus界面必须的最基本的权限。

UI:Repository

Browser:包含了浏览仓库页面所需要的权限。

UI:Search:包含了访问快速搜索栏及搜索界面所需要的权限。

Repo:All

Repositories (Read):给予用户读取所有仓库内容的权限。没有仓库的读权限用户将无法再仓库页面看到实际的仓库内容,也无法使用Maven从仓库下载构件。

Repo:All

Repositories (Full Control):给予用户完全控制所有仓库内容的权限。用户不仅可以浏览、下载构件,还可以部署构件及删除仓库内容。

为项目分配独立的仓库

如果我们将所有项目的快照版本和发布版本构件都部署到同样的仓库,就有潜在的冲突以及安全问题。我们不想让项目A的部署影响到项目B,也不想让项目B的部署影响到项目A,那么解决方法就是为每个项目分配独立的仓库,并且只将仓库的部署、修改和删除权限赋予该项目的成员,其他用户只能拥有读取、下载和搜索该仓库内容的权限。

创建仓库

单击Nexus界面左边导航栏中的Repositories链接,在右边的面板中选择Add,在下拉菜单中选择Hosted Repository。接着在下面的面板中填写仓库的ID和名称,选择Repository Policy为Release,选择Deployment Policy为Allow Redeploy,其他的选项默认。点击Save按钮。

创建权限

有了仓库以后,就需要创建基于仓库的增、删、查、改权限了。Nexus中增删查改的权限是基于Repository Target建立的。单击Nexus界面导航栏中的Repository Targets链接,可以看到Repository Target的相关信息。

点击页面导航栏中“Security”->“Privileges”->单击Add按钮,选择“Repository Target Privilege”。点击“Save”后就能在列表中看到相应的增、删、改、查权限。

创建角色

如果我们创建一个包含上述权限的角色的话就能更方便管理了。创建角色步骤如下:

从导航的“Roles”链接进入角色界面,单击上方的“Add按钮”选择“Nexus Role”。填写相关内容,并将fooReleases项目分配给角色。

创建用户

点击导航的“Users”链接,进入用户界面,然后单击“Add”按钮并选择“Nexus User”。填写相关内容。并授予用户角色信息。

Nexus的调度任务

在第一次配置Nexus的时候,Maven索引怎么也下载不下来,然后在网上找了一些资料才知道有调度任务这个东西的存在。后来有在《Maven实战》中看到。摘录如下:

Nexus提供了一系列可配置的调度任务来方便用户管理系统。用户可以设定这些任务运行的方式,例如每天、每周等。调度任务会在适当的时候在后台运行。

要建立一个调度任务,单击左边导航菜单中的“Scheduled

Tasks”,然后再右边的界面上单击Add按钮,按照页面上的提示填写相关内容。

Nexus包含了以下几种类型的调度任务:

o

Download Indexs:为代理仓库下载远程索引。

o

Empty Trash:清空Nexus的回收站,一些操作实际是将文件移到了回收站中。

o

Evict Unused Proxied Items From Repository Caches:删除代理仓库中长期未被使用的构件缓存。

o

Expire Repository Cache:Nexus为代理仓库维护了远程仓库的信息以避免不必要的网络流量,该任务清空这些信息以强制Nexus去重新获取远程仓库的信息。

o

Publish Indexs:将仓库索引发布成可供m2eclipse和其他Nexus使用的格式。

o

Purge Nexus Timeline:删除Nexus的时间线文件,该文件用于建立系统的RSS源。

o

Rebuild Maven Metadata Files:基于仓库内容重新创建仓库元数据文件maven-metadata.xml,同时重新创建每个文件的校验和md5与sha1。

o

ReIndex Repositories:为仓库编纂索引。

o

Remove Snapshots From Repositories:以可配置的方式删除仓库的快照构件。

o

Synchronize Shadow Repository:同步虚拟仓库的内容(服务基于Maven1)。

比如建立一个每个月更新一次中央仓库索引的任务:

nexus 仓库类型_Nexus仓库搭建及配置详解相关推荐

  1. nexus 仓库类型_Nexus仓库构建

    1 . 私服简介 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件.有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库:否则,私服请求外部 ...

  2. SAP S4 MM配置详解之三:物料主数据-定义物料类型/物料状态/字段选择控制/物料组

    1.定义物料类型 概念及功能说明 物料类型是对物料进行分组的一种方式,每一种类型的物料有相同的基本属性,例如原材料.半成品和成品.创建物料主记录时,将物料分配到物料类型.物料类型属于物料的一般数据.控 ...

  3. 43. Systemd的Unit配置详解,unit文件位置,优先级,unit类型,unit文件字段详解,Unit/Service/Install字段,添加mysql服务等例子

    Systemd的Unit配置详解,unit文件位置和优先级,unit文件类型,unit文件字段详解,[Unit]字段,[Service]字段,[Install]字段,添加服务,创建.service 文 ...

  4. Maven的settings.xml配置详解

    Maven的settings.xml配置详解 1 基本介绍 maven的两大配置文件:settings.xml和pom.xml.其中settings.xml是maven的全局配置文件,pom.xml则 ...

  5. [转]阿里巴巴数据库连接池 druid配置详解

    一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...

  6. SpringMVC基础--spring MVC配置详解

    牧涛 --<-<-<@态度决定一切→_→... 博客园 首页 新闻 新随笔 联系 管理 订阅 随笔- 171  文章- 3  评论- 79  spring MVC配置详解 现在主流的 ...

  7. 史上最全Android build.gradle配置详解

    Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的.当我们创建一个Android项 ...

  8. SAP 物料分类账配置详解Part 1( 基于SAP S/4HANA1909 版本)

    本文将详细介绍:SAP 物料分类账配置要点 ,本系统使用的版本是: SAP S/4HANA1909 版本 目录 1   物料分类账的后台配置 1.1   激活物料分类帐的评估区域 1.2   分配货币 ...

  9. Gradle安装和配置详解

    Gradle安装和配置详解 gradle是基于Apache Ant和Apache Maven概念的项目自动化构建开源工具,也提供了很多第三方插件.在Java Web项目中通常会用到 java.war. ...

最新文章

  1. selenium常用命令之操作页面元素及获取元素内容的事件整理
  2. [NC14301]K-th Number
  3. JavaScript——ES6新特性
  4. HDU 5693 D Game 区间dp
  5. python requests 异步调用_带有Python请求的异步请求
  6. adb安装apk报错Failure [INSTALL_FAILED_INVALID_URI]
  7. opencv(二) 图片处理
  8. 教师要合理使用计算机,教师学习计算机应用基础总结
  9. Keil综合(02)工程窗口各项图标描述
  10. python 并发编程 多进程 目录
  11. D 语言是否可作为入门级的编程语言?
  12. Julia:关于split的用法
  13. C语言实现大数计算器
  14. PHP高并发高负载下的3种实战场景解决方法
  15. 微信公众号一次性订阅消息功能开发实践
  16. win10热点开启后,手机可以连上热点但无法连接网络
  17. ABAP 生产订单的创建与修改函数
  18. MvvmLazy Android懒人框架
  19. WeChat 聊天记录从一台手机转移到另外一台手机的注意事项
  20. Windows命令行下常用网络命令解释大全

热门文章

  1. word中,去表格格式,把表格转换为文本的方法
  2. 洛谷P3387 【模板】缩点(tarjan)
  3. 阿里的敏捷组织和中台策略有何不同?
  4. PiaolinPlatformV3.0.0 - 调用手机或电脑摄像头进行拍摄(拍照模块上线)
  5. 添加背景音乐(visual stdio2019)
  6. ASP.NET 快递管理管理系统毕业设计实现步骤
  7. Linux人才需求与Windows持平 职位“粥多僧少”
  8. 【用三大件写出的开门烟花特效】
  9. web总体复习 h5c3
  10. 20190227最近比较纠结的问题vue的video中视频的播放和nginx-rtmp的推流以及什么时候推流的分析