首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

利用Nexus回构建企业级Maven仓库 2(转)

2013-10-08 
利用Nexus来构建企业级Maven仓库 2(转)添加代理仓库?Maven central是一个比较大的代理仓库,如果你需要添加

利用Nexus来构建企业级Maven仓库 2(转)

添加代理仓库

?

Maven central是一个比较大的代理仓库,如果你需要添加的一个代理仓库,那么可以在点击左边惨淡栏里面的Repositories,然后右边的页面点击add -> add proxy repository, 之后出现以下页面:

利用Nexus回构建企业级Maven仓库 2(转)

?

填写相关信息保存即可。通常情况下,使用预设的代理仓库已经能够满足大部分项目的需求了, 只有在特殊需求的情况下才会参加代理仓库.

?

管理本地仓库

?

我们前面讲到类型为hosted的为本地仓库,Nexus预定义了3个本地仓库,分别是Releases, Snapshots, 3rd Party. 分别讲一下这三个预置的仓库都是做什么用的:

  1. Releases: 这里存放我们自己项目中发布的构建, 通常是Release版本的, 比如我们自己做了一个FTP Server的项目, 生成的构件为ftpserver.war, 我们就可以把这个构建发布到Nexus的Releases本地仓库. 关于符合发布后面会有介绍.
  2. Snapshots: 这个仓库非常的有用, 它的目的是让我们可以发布那些非release版本, 非稳定版本, 比如我们在trunk下开发一个项目,在正式release之前你可能需要临时发布一个版本给你的同伴使用, 因为你的同伴正在依赖你的模块开发, 那么这个时候我们就可以发布Snapshot版本到这个仓库, 你的同伴就可以通过简单的命令来获取和使用这个临时版本.
  3. 3rd Party: 顾名思义, 第三方库, 你可能会问不是有中央仓库来管理第三方库嘛, 没错, 这里的是指可以让你添加自己的第三方库, 比如有些构件在中央仓库是不存在的. 比如你在中央仓库找不到Oracle 的JDBC驱动, 这个时候我们就需要自己添加到3rd party仓库.
  4. 你也可以创建自己的本地仓库,点击Repository面板上方的Add按钮,然后选择Hosted Repository,然后在下方的配置面板中输入相关信息, 这里我们不再需要填写远程仓库地址,根据自己的需要选择Release或者Snapshot,如图:

利用Nexus回构建企业级Maven仓库 2(转)

?

Maven仓库组

?

仓库组的概念是Maven没有的,通过前面介绍可以了解到, 我们可以建立多个proxy代理仓库,hosted本地仓库, 如果没有仓库组的概念,我们如果需要引用这些仓库的是时候需要一一加入到我们的setting.xml里面去, 有了仓库的组的概念, 我们只需要做一次引用就可以了,把我们需要的仓库加入到仓库组即可.像这样:

??? <repositories>

???? <repository>

?? ???? <id>nexus</id>???????????????????????????????????

????????? <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>??????????????????? ??

??????????? <releases>

??????????? <enabled>true</enabled>

??? </releases>

???? <snapshots>

?????? <enabled>true</enabled>

???? </snapshots>

</repository>

? </repositories>

Nexus中预设了2个仓库组,public repositories和public snapshot repositories. 如图:

利用Nexus回构建企业级Maven仓库 2(转)

这个仓库组默认包含本地仓库Releases, snapshots, 3rd party和代理仓库Maven Central. 你可以在Configuration配置页添加仓库到这个仓库组. 如果需要你还可以创建一个仓库组,如图:

点击 Add->Repository Group

出现New Repository Group界面后,填入ID, name 等相关信息, 在右边Available Repositories 栏里可以选择你要添加的仓库到你新建的仓库组.?

利用Nexus回构建企业级Maven仓库 2(转)

?

?

通过Nexus搜索构件

?

在我们实际使用构件的过程中通常遇到一个问题,有时候我紧紧知道我所需要的构建的大致名字,并不知道全称或group id, 这是件非常头疼的事情. Nexus基于Nexus indexer的搜索功能帮我们解决了这个问题.

要是用搜索功能, 必须要有索引文件, Nexus默认是不建立索引文件的,因为像中央仓库这样的索引文件的建立需要耗费比较大的网络资源,仅索引文件就要几十兆. 要开启中央仓库的索引文件下载功能需要在Maven Central的配置页面, 把Download Remote Indexes选择true. 如图:

利用Nexus回构建企业级Maven仓库 2(转)

这样设置以后, Nexus会自动从远程中央仓库下载索引文件, 为了检验索引文件自动下载是否生效,可以却换到Browse:

利用Nexus回构建企业级Maven仓库 2(转)

如果出现先以上文件夹,那说明索引文件已经建立.

下面我试一下搜索功能, 在左边菜单栏里面有个Artifact Search, 在输入框里面输入你想要搜索的构件名字,比如: testing, 那么查询结果如下:

利用Nexus回构建企业级Maven仓库 2(转)

这是模糊查询的结果,当然如果你知道更多信息,比如版本号等,你可以使用高级搜索,点击高级搜索后,右边界面会提供集中搜索方式:keyword, classname, GAV, checksum

利用Nexus回构建企业级Maven仓库 2(转)

比如我们这里选择GAV模式, 而且我只知道artiface name : testng和版本号5.8, 其他的我不知道, 那么就在artifact 和 version处分别输入testng 和 5.8 , 搜索结果如下:

利用Nexus回构建企业级Maven仓库 2(转)

你如果你不知道知道构件的名称, 只知道classname, 那么你也可以通过class name 的方式搜索,这里就不再赘述

当你选择一项搜索结果,在页面的下方会出现这个构件的详细信息, 并且会列出这个构件的Maven依赖配置, 你可以直接拷贝到你的pom文件中使用,这是个非常实用的功能:

利用Nexus回构建企业级Maven仓库 2(转)

Maven中使用Nexus

?? 到此为止我们介绍了如何安装和使用Nexus以及其基本配置, 下面我们介绍下如何让Maven来使用Nexus本地仓库用来替代使用远程仓库. 在Maven使用Nexus本地仓库只需稍作配置, 在settings.xml中加入以下代码:

??? <profile>

?????? <id>dev</id>

????????? <repositories>

???????????? <repository>

???????????????? <id>nexus</id>

????????????? ?? <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>

???????????????? <releases>

??????????????????? <enabled>true</enabled>

???????????????? </releases>

???????????????? <snapshots>

??????????????????? <enabled>true</enabled>

???????????????? </snapshots>

????????????? </repository>

??????????? </repositories>???????????

??????????? <pluginRepositories>

??????????????? <pluginRepository>

??????????????????? <id>nexus</id>

??????????????? ??? <url>http://127.0.0.1:8081/nexus/content/groups/public</url>

??????????????????? <releases>

??????????????????????? <enabled>true</enabled>

??????????????????? </releases>

??????????????????? <snapshots>

??????????????????????? <enabled>true</enabled>

??????????????????? </snapshots>

??????????????? </pluginRepository>

??????????? </pluginRepositories>

??????? </profile>

??? </profiles>

???

??? <activeProfiles>

??????? <activeProfile>dev</activeProfile>

??? </activeProfiles>

?

这里配置了repository和pluginRepository, Maven在使用第三方构件和插件时是分开来配置的,所以如果我们也希望插件的下载也通过我们的本地仓库来下载,那么我们就需要配置pluginRepository.

红色字体部分就是我们之前安装的Nexus的地址, 这个地址可以是你们公司局域网内部的一台仓库服务器.

<releases> <enabled>true</enabled></releases>这个标签的作用是设定是否允许下载?

release版本的载构件, 同样snapshots标签可以设定是否允许下载snapshot版本的构件.

通常,我们不建议下载snapshot版本的构件,因为它是不稳定的版本, 除非你有特殊的需

求.

热点排行