Maven私服-nexus使用简介

Nexus部署

Nexus介绍

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

 下载和安装

http://nexus.sonatype.org/downloads/ 下载最新版本的Nexus,笔者使用的是2.4版本。

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

该文档中使用的war安装方式,但是此处两种安装方式都介绍。

 Bundle方式安装

解压nexus-2.4-bundle.zip 至任意目录,如D:\dev_tools ,然后打开CMD,cd至目录\nexus-2.4\bin\jsw\windows-x86-32 ,运行Nexus.bat 。你会看到Nexus的启动日志,当你看到“Started SelectChannelConnector@0.0.0.0:8081”之后,说明Nexus启动成功了,然后打开浏览器,访问 http://127.0.0.1:8081/nexus,你会看到如下的页面:

要停止Nexus,Ctrl+C即可,此外InstallNexus.bat可以用来将Nexus安装成一个windows服务,其余的脚本则对应了启动,停止,暂停,恢复,卸载Nexus服务。

 WAR方式安装

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

配置Maven使用Nexus

默认情况下,Maven依赖于中央仓库,这是为了能让Maven开箱即用,但仅仅这么做明显是错误的,这会造成大量的时间及带宽的浪费。既然文章的前面已经介绍了如何安装和配置Nexus,现在我们就要配置Maven来使用本地的Nexus,以节省时间和带宽资源。

我们可以将Repository配置到POM中,但一般来说这不是很好的做法,原因很简单,你需要为所有的Maven项目重复该配置。因此,这里我将Repository的配置放到$user_home/.m2/settings.xml中:

    <settings> 

    ...  

    <profiles> 

      <profile> 

        <id>local-nexus</id> 

        <repositories> 

          <repository> 

            <id>local-nexus</id> 

            <url>Nexus groups 地址,如:

              http://localhost:8090/nexus-2.4/content/groups/public/  

            </url> 

            <releases> 

              <enabled>true</enabled> 

            </releases> 

            <snapshots> 

              <enabled>true</enabled> 

            </snapshots> 

          </repository> 

        </repositories> 

      </profile> 

</profiles> 

*********************

    <activeProfiles> 

      <activeProfile>local-nexus</activeProfile> 

    </activeProfiles> 

    ...  

    </settings>

 

 

由于我们不能直接在settings.xml中插入<repositories>元素,这里我们编写了一个profile,并添加了一 个profile并使用<activeProfile>元素自动将这个profile激活。这里的local-nexus仓库指向了刚才我们 配置的Nexus中“Public Repositories”仓库组,也就是说,所有该仓库组包含的仓库都能供我们使用。此外,我们通过<releases> 和<snapshots>元素激活了Maven对于仓库所有类型构件下载的支持,当然你也可以调节该配置,比如说禁止Maven从Nexus 下载snapshot构件。

使用该配置,Maven就会从你的Nexus服务器下载构件了,速度和从Central下载可不是一个数量级的。

 

修改nexus-work目录

Nexus的工作目录默认为nexus-work=${user.home}/sonatype-work/nexus,在该目录下面存储有nexus的配置信息和下载的库文件,所占用的空间比较大,大家可以按照需求修改。

1. 如果下载的是WAR包版,请修改:nexus-*\WEB-INF\plexus.properties这个目录中的内容。使用WinRAR或者是其他的解压软件打开nexus-*.war,将nexus-work修改为自己的目录之后保存。

2. 如果下载的是内置Jetty版,请修改:(该方式未经验证)

Ø  start-nexus方式启动

%Nexus_HOME%/conf/nexus.properties

nexus-work=${bundleBasedir}/../../sonatype-work/nexus

Ø  console-nexus方式启动

直接添加环境变量PLEXUS_NEXUS_WORK

 

建议:如果不建议有一个dos窗口的话,添加环境变量后,每次使用console-nexus的方式启动,好处是每次升级Nexus后不用修改配置文件。

Nexus配置镜像

在上述配置方式中,Maven首先查找Nexus中的jar包,如果找不到则去中央仓库下载。在此,我们通过配置镜像的方式阻止Maven下载中央工厂中的jar包,即如果Nexus中不存在jar包,则用户就无法获得该包。

具体配置为:在$user_home/.m2/settings.xml中设置mirror即可。

 <mirrors>

    <mirror>

      <id>nexusMirror</id>

         <!--此处使用*匹配所有的仓库,此为推荐的配置方式-->

      <mirrorOf>*</mirrorOf>

      <name>本地镜像</name>

      <url>http://localhost:8090/nexus-2.4/content/groups/public/</url>

    </mirror>

    

  </mirrors>

 

如此,只有Nexus才可以访问中央仓库。此时$user_home/.m2/settings.xml中profile中配置的repository已经无效。

 

部署构件至Nexus

Nexus提供了两种方式来部署构件,你可以从UI直接上传,也可以配置Maven部署构件。

 

通过Nexus UI部署

有时候有个jar文件你无法从公共Maven仓库找到,但是你能从其它得到这个jar文件(甚至是POM),那么你完全可以将这个文件部署到Nexus中,使其成为标准流程的一部分。步骤如下:

点击左边导航栏的"Repository",在右边的仓库列表中选择一个仓库,如“3rd Party”,然后会看到页面下方有四个tab,选择最后一个“Upload”,你会看到构件上传界面。选择你要上传的构件,并指定POM,(或者手工编 写GAV等信息),最后点击Upload,该构件就直接被部署到了Nexus的"3rd Party"仓库中。如图:


通过Maven部署

更常见的用例是:团队在开发一个项目的各个模块,为了让自己开发的模块能够快速让其他人使用,你会想要将snapshot版本的构件部署到Maven仓库中,其他人只需要在POM添加一个对于你开发模块的依赖,就能随时拿到最新的snapshot。

以下的pom.xml配置和settings.xml能让你通过Maven自动化部署构件:

Pom.xml

 

    <project> 

    ...  

    <distributionManagement> 

      <repository> 

        <id>nexus-releases</id> 

          <name>Nexus Release Repository</name> 

          <url>Nexus release 地址</url> 

      </repository> 

      <snapshotRepository> 

        <id>nexus-snapshots</id> 

        <name>Nexus Snapshot Repository</name> 

        <url>Nexus snapshots地址</url> 

      </snapshotRepository> 

    </distributionManagement> 

    ...  

    </project>

 

Settings.xml

<settings>

...

<servers>

  <server>

    <id>nexus-releases</id>

    <username>admin</username> <!--此处的用户名、密码为管理员分配的用户名和密码-->

    <password>admin123</password>

  </server>

  <server>

    <id>nexus-snapshots</id>

    <username>admin</username>

    <password>admin123</password>

  </server> 

</servers>

...

</settings>

这里我们配置所有的snapshot版本构件部署到Nexus的Snapshots仓库中, 所有的release构件部署到Nexus的Releases仓库中。由于部署需要登陆,因为我们在settings.xml中配置对应 Repository id的用户名和密码。

然后,在项目目录中执行deploy ,你会看到maven将项目构件部署到Nexus中,浏览Nexus对应的仓库,就可以看到刚才部署的构件。当其他人构建其项目时,Maven就会从Nexus寻找依赖并下载。

 

 

搜索构件

在浩大的Maven仓库中一下下点击链接,浏览路径以寻找感兴趣的构件是一件很郁闷的事情。Nexus基于nexus-indexer提供构件搜索功能,要想对仓库进行搜索,无论是hosted,proxy,或者group,你都必须确认索引文件存在。这一点对于代理仓库尤其重要,有些远程仓库可能根本就没有索引,所以你无法搜索这些代理仓库。有些远程仓库的远程索引非常大,如中央仓库达到了70M左右,那么第一次下载索引需要花很多时间,所以要期望得到搜索结果,确保看到如下的文件:

一旦你的Nexus拥有了本地或者远程仓库的索引文件,你就可以享受Nexus的构件搜索功能了。不论登陆与否,你都可以使用关键字进行模糊搜索,比如我在左边导航栏上部的搜索框内输入junit,然后点击搜索按钮,右边立刻会分页显示500多条的junit相关构件信息。如果你了解更多的信息,你也可以通过限定groupId,artifactId,version进行搜索,点击导航栏中的“Advanced Search”,点击右边所有页面左上角的下拉框,选择“GAV Search”。笔者这里输入junit:junit:4.4,然后回车:


选择一项搜索结果,在页面下方会显示“Artifact Information”的面板,你可以点击"artifact"或者"pom"下载对应文件,而该面板右边更显示了一个Maven依赖配置,你可以直接复制该配置到Maven POM中,这是个十分方便的特性。

此外,值得一提的是,Nexus还支持基于classname的搜索,你只需点击搜索页面右上角的下拉框,选择“Classname Search”,然后输入类名即可,这里我不再赘述。


 

转载于:https://my.oschina.net/u/1011659/blog/393957

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值