现在的位置: 首页 > 综合 > 正文

WEBX3学习-用Nexus配置Maven仓库管理器

2013年10月20日 ⁄ 综合 ⁄ 共 2493字 ⁄ 字号 评论关闭

         由于webx3采用maven管理项目部署,而maven会用到中央仓库,由于全球都在用中央仓库,下载的速度可想而知,我用的时候简直有点崩溃,所以需要先配置一个中央仓库的代理服务,供局域网内的项目组用,那就开始吧。

Nexus介绍

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

下载和安装

你可以从http://nexus.sonatype.org下载最新版本的Nexus,笔者使用的是2.0.5版本,也可以在nexus-2.0.5-bundle.zip下载。

Nexus提供了两种安装方式,一种是内嵌Jetty的bundle,只要你有JRE就能直接运行。第二种方式是WAR,你只须简单的将其发布到web容器中即可使用。

Bundle方式安装

解压nexus-2.0.5-bundle.zip至任意目录,如D:\dev_tools,然后打开CMD,cd至目录D:\dev_tools\nexus-webapp-2.0.5\bin\jsw\windows-x86-32,运行nexus.bat   install,然后运行nexus.bat   start,这时候nexus被加到windows的服务中,以后启动系统将自动运行。然后打开浏览器,访问http://127.0.0.1:8081/nexus,你会看到如下的页面:

WAR方式安装

你需要有一个能运行的web容器,这里以Tomcat为例,加入Tomcat的安装目录位于D:\dev_tools\apache-tomcat-6.0.18,首先我们将下载的nexus-webapp-2.0.5.war重命名为nexus.war,然后复制到D:\dev_tools\apache-tomcat-6.0.18\webapps\nexus.war,然后启动CMD,cd到D:\dev_tools\apache-tomcat-6.0.18\bin\目录,运行startup.bat。一切OK,现在可以打开浏览器访问http://127.0.0.1:8080/nexus,你会得到和上图一样的界面。

代理外部Maven仓库

登陆

要管理Nexus,你首先需要以管理员身份登陆,点击界面右上角的login,输入默认的登录名和密码:admin/admin123,登陆成功后,你会看到左边的导航栏增加了很多内容:

这里,可以管理仓库,配置Nexus系统,管理任务,管理用户,角色,权限,查看系统的RSS源,管理及查看系统日志,等等。你会看到Nexus的功能十分丰富和强大,本文,笔者只介绍一些最基本的管理和操作。

 

代理Maven中央仓库

点击左边导航栏的Repositories,界面的主面板会显示所有一个所有仓库及仓库组的列表,你会看到它们的Type字段的值有group,hosted,proxy,virtual。这里我们不关心virtual,只介绍下另外三种类型:

  • hosted,本地仓库,通常我们会部署自己的构件到这一类型的仓库。
  • proxy,代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
  • group,仓库组,用来合并多个hosted/proxy仓库,通常我们配置maven依赖仓库组。

由此我们知道,我们需要配置一个Maven中央仓库的proxy,其实Nexus已经内置了Maven Central,但我们需要做一些配置。点击仓库列表中的Maven Central,你会注意到它的Policy是release,这说明它不会代理远程仓库的snapshot构件,这是有原因的,远程仓库的snapshot版本构件不稳定且不受你控制,使用这样的构件含有潜在的风险。

然后我们发现主面板下方有三个Tab,分别为Browse,Configuration和Mirrors,我们点击Configuration进行配置,你现在需要关心的是两个配置项:“Remote Storage Location”为远程仓库的地址,对于Maven Central来说是http://repo1.maven.org/maven2/;

“Download Remote Indexes”顾名思义是指是否下载远程索引文件,Maven Central的该字段默认为False,这是为了防止大量Nexus无意识的去消耗中央仓库的带宽(中央仓库有大量的构件,其索引文件也很大)。这里我们需要将其设置为True,然后点击Save。在Nexus下载的中央仓库索引文件之后,我们就可以在本地搜索中央仓库的所有构件。下图展示了我们刚才所涉及的配置:

添加一个代理仓库

这里我们再举一个例子,我们想要代理Sonatype的公共仓库,其地址为:http://repository.sonatype.org/content/groups/public/。步骤如下,在Repositories面板的上方,点击Add,然后选择Proxy Repository,在下方的配置部分,我们填写如下的信息:Repository ID - sonatype;Repository Name - Sonatype Repository;Remote Storage Location - http://repository.sonatype.org/content/groups/public/。其余的保持默认值,需要注意的是Repository
Policy,我们不想代理snapshot构件,原因前面已经描述。然后点击Save。

关于Nexus的其他功能可参照:http://juvenshun.iteye.com/blog/349534

抱歉!评论已关闭.