添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

下载地址: Download Repository OSS

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系统,访问地址: localhost:8081/nexus/ ,默认用户名/密码:admin/admin123。

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

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

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

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

Nexus中自带的仓库:

Maven central是Maven的中央仓库;

central是一个代理仓库;

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

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

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时会自动发布到正式版本库中。

具体操作步骤如下:

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

2. 在项目的pom.xml增加认证信息,认证信息包含:对应仓库的id,name,url,注:server 的id要与repository的id保持一致。如下图:


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



新建仓库

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

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

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


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



添加第三方插件

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

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

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

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

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

点击“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插件,具体的操作步骤如下:

查看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”进入所有仓库信息,进行以下两部操作:

选中“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包含了以下几种类型的调度任务:

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

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

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

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

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

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

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

ReIndex Repositories:为仓库编纂索引。