搭建局域网Maven服务器

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

一、下载和安装Nexus

1、下载Nexus

从http://nexus.sonatype.org/downloads/下载最新版本的Nexus,Nexus有两种版本:开源版本和专业版本。这里我们下载开源版本。

下载界面如下图所示:

2、安装Nexus

安装Nexus只有一个前提,就是必须先安装JRE,Java 5或Java 6都可以(推荐使用Java 6)。

Nexus提供有两种安装方式,一种是内嵌Jetty的bundle绑定包,只要有JRE就能直接运行。第二种方式是WAR,只须简单的将其发布到web容器中即可使用。这里我们重点讲解第一种安装方式。这种方式可以将Nexus(开源版本)作为一个单独的服务器来安装。

Nexus绑定有一个Jetty,Jetty监听主机(0.0.0.0)上所有配置的IP地址并默认运行在端口8081。

解压nexus-oss-webapp-1.9.1.1-bundle.zip 至任意目录,如D:\nexus,然后配置环境变量${NEXUS_HOME},指向目录D:\nexus\nexus-oss-webapp-1.9.1.1,此即为nexus的安装目录。

Nexus安装目录总有一个兄弟目录,名为“sonatype-work”。这个目录包含有所有资源库和Nexus的配置信息,这样配置在Nexus安装目录之外,使得Nexus的版本更新更加容易。默认情况下,该目录总是作为nexus安装目录的兄弟目录,用来保存资源内容和配置。如果想要改变该目录的位置,可以在文件${NEXUS_HOME}/conf/plexus.properties中修改nexus-work属性。

3、运行Nexus

进入到以下目录位置:

D:\nexus\nexus-oss-webapp-1.9.1.1\bin\jsw

在这个目录下,有许多Nexus运行的平台可供选择,如下图所示:

我用的是windows系统,所以选择图中红框选中的平台:windwos-x86-32。进到目录以后,可以看到有许多批处理文件。如下图:

如果是第一次运行,首先运行Installnexus.bat批处理程序,将其安装为Windows服务,然后运行Startnexus.bat批处理程序,启动Nexus服务器。如下图:

当我们启动Nexus时,我们是在启动一个web服务器,默认端口号为0.0.0.0:8081。Nexus运行在名为Jetty的Servlet容器中,它由一个名为“Tanuki Java Service Wrapper”的本地服务包装器启动。可以通过配置这个service wrapper,将Nexus作为一个Windows服务或一个Unix daemon运行。

启动以后,Nexus将处于运行状态并在8081端口上监听为当前主机配置的所有IP地址(0.0.0.0)。要使用Nexus,首先打开一个浏览器,键入URL:http://localhost:8081/nexus。(也可用127.0.0.1或其他配置的IP地址)。这时会打开Nexus的初始欢迎界面,如下图所示:

单击页面右上角的【log in】链接,会弹出登录对话框,默认的用户名是“admin”,密码是“admin123”。如下图所示:

登录后界面如下:

二、配置Nexus

以管理员身份登陆成功后,会看到左边的导航栏增加了很多内容。在这里,我们可以管理仓库,配置Nexus系统,管理任务,管理用户,角色,权限,查看系统的RSS源,管理及查看系统日志,等等。可以看到Nexus的功能十分丰富和强大。在本教程中,我们只介绍一些最基本的管理和操作。

1、修改密码

在管理界面左侧栏,选择【Security】|【Change Password】,会弹出密码修改对话框。建议修改默认密码,以保证安全。

2、设置远程资源库索引

在Nexus中,用户管理的资源库有三种类型(virtual除外):

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

Nexus代理三个重要的远程资源库:Maven Central资源库、Apache Snapshot资源库和Codehaus Snapshot资源库。每个远程资源库都包含有成千上万的artifact,全部下来是不切实际的。所以Nexus中只维护它们的索引,使用这些索引来搜索artifact,需要的时候再下载内容。不过默认情况下是禁止下载这些索引的,这就需要通过配置允许下载索引。步骤如下:

在左侧栏中,选择【Views/Repositories】|【Repositories】,右侧会打开用户管理的资源列表。找到上述的三个远程资源库,在下方的属性窗口,将“Download Remote Indexes”设为“true”,并保存修改。如下图所示:

在Nexus下载远程资源库索引文件之后,我们就可以在本地搜索远程资源库的所有构件(artifact)了。

3、管理资源库

在左侧栏中,选择【Views/Repositories】|【Repositories】,右侧会打开用户管理的资源列表。在最上面一栏,我们可以更新、添加和删除资源库。如下图:

4、管理Maven仓库组

Nexus中仓库组的概念是Maven没有的,在Maven看来,不管你是hosted也好,proxy也好,或者group也好,对我都是一样的,我只管根据groupId,artifactId,version等信息向你要构件。为了方便Maven的配置,Nexus能够将多个仓库,hosted或者proxy合并成一个group,这样,Maven只需要依赖于一个group,便能使用所有该group包含的仓库的内容。

Nexus预定义了“Public Repositories”仓库组,默认合并所有预定义的Release仓库。

点击列表中的“Public Repositories”,然后选择下方的"Configuration" Tab,在配置面板中,将右边“Avaiable Repositories”中的资源库移动到左边的“Ordered Group Repository”中即可,如图:

三、配置Maven使用本地Nexus

要使用Nexus,我们需要配置我们的Maven检查Nexus,而不再是公共资源库。要达到这个目的,我们需要在~/.m2/settings.xml(Maven 3.0.3 为%MAVEN_HOME%\conf\settings.xml)文件中编辑镜像设置(mirror setting)。

这一章,我们首先演示怎样配置Maven使用我们安装的Nexus取代直接从Maven中央资源库获取artifact。接下来,我们将覆盖中央资源库并演示Nexus的工作,返回来,我们将提供一个更加灵敏的setting设置,这个设置将覆盖release和snapshot。

1、配置Maven使用单一Nexus组

如果我们调整Nexus用于局域网内部开发,我们应该配置一个单一的Nexus组,让它包含release和snapshot。要达到这个目的,添加snapshot资源库到我们的公共组(public group),并向Maven的设置文件~/.m2/settings.xml中(Maven 3.0.3 为%MAVEN_HOME%\conf\settings.xml)添加如下的镜像配置:

<settings>
  <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://192.168.0.254:8081/nexus/content/groups/public</url>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
      <id>nexus</id>
      <!--Enable snapshots for the built in central repo to direct -->
      <!--all requests to nexus via the mirror -->
      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
</settings>

在上面的文件中,我们定义了一个单一的profile:nexus。配置这个nexus profile用来使用http://central 伪URL从中央资源库下载。这个URL被同一settings.xml文件中的镜像设置所覆盖,并指向我们的单一Nexus组的URL。然后在activeProfiles元素中列出该nexus组作为一个活动的profile。

2、为缺失的依赖库添加自定义资源库

如果我们配置Maven的settings.xml列出Nexus的公共组作为所有资源库的镜像,那么可能会遇到不能从本地Nexus安装获取artifact(构建)的问题。这通常是因为我们试图构建一个在pom.xml定义了自定义资源库和snapshotRepositories的项目引起的。当我们遇到包含有在pom.xml中自定义资源元素的项目时,将这个资源添加到Nexus作为一个新的代理资源库,然后将这个新的代理资源库添加到公共组。

3、添加两个新的资源库

要添加一个资源库,首先作为管理员登录,单击左侧栏Views/Repositories面板中导航菜单中的Repositories链接。单击这个链接会出现一个窗口,列出Nexus已知的所有资源。要添加新的资源库,单击位于资源列表正上方的【Add…】链接,这时会出现一个下拉列表,有这么几个选项:Hosted Repository, Proxy Repository, Virtual Repository, and Repository Group。因为我们要创建一个代理资源库,所以单击【Proxy Repository】。如下图所示:

4、将添加的新资源库加入公共资源库(Public Repositories)

将添加的新资源库加入公共资源库很简单。选择左侧栏【Views/Repositories】|【Repositories】,在右侧出现的资源列表中,单击【Public Repositories】,在下方出现的配置窗口中,将右侧的【Available Repositories】中新添加的两个资源库导入到左侧的【Ordered Group Repositories】中,然后单击【Save】即可。如下图所示:

这样配置以后,让团队中所有开发者都指向Nexus中的Public Repository,以后不管我们怎样调整Nexus中的资源库,都不需要团队中的开发者改变他们的本地配置。而管理者对团队应该使用哪个/哪些资源就有了更多地控制。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值