使用Nexus搭建maven服务器 1 下载与安装 1.1 下载Nexus Nexus下载地址:http://www.sonatype.org/nexus/go/ 进入如下页面: 选择箭头所指的按钮
使用Nexus搭建maven服务器
1 下载与安装
1.1 下载Nexus
Nexus下载地址:http://www.sonatype.org/nexus/go/
进入如下页面:
选择箭头所指的按钮,点击下载。
1.2 安装
下载之后将安装包解压:
解压到自己的安装目录。例如:C:/Program Files/Nexus
系统默认启动的端口为8081.如果需要更改,修改/conf/nexus.properties文件:
修改application-port为你需要的端口,例如8080
之后到/bin/jsw/文件夹中找到对应当前操作系统的文件夹:
例如在windows server2012 x64中就打开windows-x86-64文件夹,打开后文件结构如下:
Console-nexus.bat: 从命令行启动nexus进程(一次性)
Install-nexus.bat: 将nexus安装为windows服务,随着系统启动
Uninstall-nexus.bat: 卸载nexus系统服务(若没有安装会报错)
Start-nexus: 启动nexus系统服务
Stop-nexus: 停止nexus系统服务
一般将nexus安装为系统服务随系统启动。点击install-nexus.bat。如果报错,检查JDK是否已经安装,并且正确配置了环境变量JAVA_HOME,同时以管理员身份运行。
安装成功后就可以在浏览器中访问nexus管理程序。例如http://192.168.1.7:8080/nexus/
如果显示如下页面,说明安装成功:
2 仓库管理
2.1 仓库结构
进入Nexus管理程序,点击右上角log In,默认的用户名为admin,密码为admin123。(不登录只能查看当前仓库和查找jar包的maven地址,不能对Nexus进行配置)。
点中上图箭头指向的Repositories,可以看见下图所示的界面:
其中仓库有以下几种类型:
Group: 仓库组。向外提供服务的单位。可包含多个仓库
Hosted: 宿主仓库。建立在安装nexus的服务器上。
Proxy: 代理仓库。代理其他远程maven仓库。
Virtual: 虚拟仓库。相当于另一个仓库的镜像。
Nexus默认的仓库如下:
Public Repositories: 公共仓库组。默认的对外发布仓库。
3rd party: 本地的第三方仓库。用于上传第三方jar包
Apache Snapshots: Apache Snapshots仓库。基本用不到
Central: 代理Maven中央仓库。
Central M1 shadow: 中央仓库的镜像
Release: 自己工程的release包
Snapshots: 自己工程的Snapshots包
2.2 仓库配置
2.2.1 远程仓库索引
仓库的索引用于快速搜索jar包并且获得所需要的xml数据。所有被代理的远程仓库都需要Nexus获取索引并发布为Nexus索引。
以中央仓库为例:
选中central,在下方的面板中找到configuration,将download remote index改为true。
选中 central,右键点击repair index。系统会自动下载中央仓库的索引,转化为Nexus服务器仓库组的索引,并且发布在服务器上。当这一步成功以后,使用者就可以下载Nexus提供的索引在本地查找Jar包的xml数据了。(详见Maven配置文档。)
建立索引时,可以在AdministrationàScheduled task中看到创建索引任务正在进行。同时可以在
administration-> logging中看到日志。
注意:建立索引这一过程耗时极长。并且由于网络访问问题,从远程仓库如中央仓库下载索引的过程容易失败。日志中会出现Socket exception或者request timeout或者javaw exception,并且scheduled task中创建索引的任务消失。如果出现此种情况,说明远程索引未下载成功。遇到这种情况请重试,必要的话可以尝试更换DNS地址。
创建索引一共分为3部分,首先从远程仓库下载索引,解压并解析下载到的索引,发布新索引到Nexus代理仓库。在创建索引的过程中,打开windows资源监视器,第一阶段基本只占用网络资源,同时,如果JAVA进程占用的网速没超过带宽的50%,那此次下载就很可能失败。如果只有几十KB,可以考虑直接点击stop.bat结束服务重启。第二阶段特点是高CPU用,接近100%。最后一个阶段特点是硬盘占用大,CPU占用在30%到100之间。如果进行到了第三个阶段,就几乎不需要担心创建失败的问题了。
不要同时对两个仓库执行修复索引或者更新索引操作。会导致在发布索引时报错。
如果索引创建成功,选中仓库就可以浏览仓库中的所有目录。
同时在搜索框搜索jar包的名字,就可以得到详细的搜索结果。
创建索引的过程中,会在磁盘上创建大量的临时文件。规模在10G级别,如果一次创建失败,重新开始时,上一次的临时文件不会被自动删除。所以创建完索引后,建议重启Nexus服务。(stop-nexus.bat,start-nexus.bat),让系统自行删除临时文件。(Nexus无法通过浏览器远程重新启动)
2.2.2 新增仓库
如果需要新增代理仓库,在Repositories面板点击add按钮。选择proxy 仓库。输入仓库ID,Name,URL。
点击save确定。完成仓库增加。
选中现在使用的仓库组,选中下方面板中的configuration,将刚刚创建的新仓库加入你需要的仓库组中。
至此,新仓库增加完毕,并且已经就可以被访问。
2.2.3 提供Maven仓库服务
Nexus向外提供服务的单位是仓库组。在客户端将maven的仓库地址改成自己仓库组的地址即可。
3 包管理
3.1 新增第三方包
遇到Maven远程仓库中没有的jar包(例如下载的jar),需哟手动上传到Nexus仓库。
选中3rd party,在下方的面板中选中artifact upload。
GAV Definition是maven的pom文件,可以选择手动填写或者从pom.xml上传。如果jar包本来就有maven工程创建,建议从jar包里的pom.xml直接上传代替手动输入。这样可以建立jar包的依赖关系。在引入自己的maven工程之后编译时会自动下载依赖包而不需要手动增加依赖包。
Select Artifact(s) for Upload:在这里上传jar包。
最后点击upload artifact完成上传。点击save发布到3rd party仓库。
3.2 删除第三方jar包
选中3rd party,在下方的面板中选择browse storage。找到你要删除的jar包,右键点击删除。(可以删除jar包,也可以直接删除某个路径下所有的子路径和jar包)。