`
EricShaw
  • 浏览: 29701 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

持续集成构建方案:利用Nexus搭建Maven私服

阅读更多

    上一篇简单介绍了持续集成构建方案,其中提到了Maven的构建和Hundson的持续集成服务,这里主要介绍下利用Nexus搭建Maven私服的过程,在搭建的过程中遇到了很多问题,也查找了不少资料,将这些记录下来,以方便以后索引,感兴趣的同事可以按照这个在本机上搭建一个玩玩。

 

    首先列出几个需要准备的下载包:

  1. Maven : 目前最新的版本是2.2.1,可从http://maven.apache.org/download.html下载;
  2. eclipse: 目前Qone online团队是统一用的ganymede 3.4;
  3. m2eclipse: Maven在eclipse下的一个插件,通过它可以替代命令行操作;直接通过eclipse自动更新下载;
  4. nexus: 用来管理maven构建包的中央仓库,目前最新版本是1.6.0,可从http://nexus.sonatype.org/download-nexus.html下载;

   
     Maven包下下来后,会发现它的包其实很小,不到2M,它的核心其实不做什么实际的事情,只是解析一些 XML 文档,管理生命周期与插件。Maven 被设计成将主要的职责委派给一组 Maven 插件,这些插件可以影响 Maven 生命周期,提供对目标的访问。另外Maven本身维护有一个中央的集中仓库,里面包括了几乎所有的包和插件,当你运行Maven命令的时候,它会自动从中央仓库下载必要的插件和包,以执行命令。比如你有个项目用到了junit测试,那么要运行测试用例的话必须有相应的junit包,按以往的做法,我们需要去网上找到这个包,然后建个lib文件夹放到里面,然后引用。如果用Maven会怎样呢?你只需要在maven的pom.xml(Project Object Model)文件中,加上如下片段:
    
<dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
  </dependency>
    

      即定义一个依赖,告诉maven你需要junit包,它的版本是3.8.1,这时候你敲个命令mvn test,它就会自动去中央仓库下载相应的junit包存到你本地,并运行单元测试。下次再运行的时候,它会先从你本地去找,找不到再去中央服务器下载。xp下默认的保存地址是C:\Documents and Settings\用户名\.m2\repository。这样可以解决什么问题呢?首先是版本依赖的问题,一个jar包多个版本的引用不会引发问题,你只要把版本标识好就行了,这个特性对于osgi和saas的可定制化实现是非常方便的。

 

     可能有人要问:既然maven已经给我们提供了一个中央的仓库,那我们为什么还需要自己去建个私服呢?原因有几个:一是maven上面的包一般是公共的包,比如spring ,hibernate这些,假设我们自己内部开发的一些包或者一些引用的第三方包,那里面肯定是没有的,所以我们需要把这些包部署到我们自己的私服上; 二是网络原因,假设团队里每个成员都去下载这些包,肯定是占带宽且费时间。基于这两个原因,maven官方其实也是推荐企业去建立自己的私服,这样可以降低官方仓库的压力。

 

    如果建立了maven的私服,这时候运行程序所需的包,maven会先从本地找(就是前面提到的C:\Documents and Settings\用户名\.m2\repository目录),本地找不到就去私服上找,再找不到就去maven中央仓库找,找完了下下来先放到私服上,这样下次就不用重新下载了。nexus提供了强大的功能去管理和维护这样一个maven仓库,同时通过lucene提供包的检索。下面简单介绍下整个的安装过程:

 

    一 Maven安装
    Maven的安装很简单,解压出来,然后将bin目录D:\Program Files\apache-maven-2.2.1\bin(根据安装地址而定)添加到path环境变量即可。安装完可打开命令行,运行mvn -version看是否安装成功;
 
    二 m2eclipse安装
    要安装m2Eclipse 插件,你需要符合一些先决条件。你需要运行Eclipse 3.2 或更高版本,JDK 1.4 或更高版本,你需要确认Eclipse 是在JDK 上运行而不是JRE。在你有了Eclipse 和兼容的JDK 之后,你需要安装几个Eclipse 插件:Subclipse
,Mylyn Web Tools Platform (WTP) , AspectJ Development Tools (AJDT)。

    以我们使用的eclipse 3.4 Ganymede 为例,你需要选择Help &rarr; Software Updates…,它会载入”Software Updates and Add-ons”对话框。在这个对话框中,选择”Available Software”面板然后点击Add Site…,它会载入”Add Site” 对话框。输入更新站点的URL 然后点击OK。在”Software Updates and Add-ons”对话框中会出现更新站点上可用的插件。你可以选择你想要安装的模块然后点击Install…按钮。Eclilpse 会解析所选插件的所有依赖,然后要求你同意插件的许可证。在Eclipse 安装了新的插件之后,它会征求你的允许以重启。

    m2eclipse的update site是http://m2eclipse.sonatype.org/sites/m2e

 

    三 nexus安装

1.【下载Nexus】首先在nexus的官网下载nexus的最新版本,我下载的是1.6.0的zip版本(nexus-oss-webapp-1.6.0-bundle.zip),大小是17M,解压到一个文件夹下。

2.【启动服务】打开bin目录,里面有不同系统下的应用,以32位的xp为例,进入.\nexus-oss-webapp-1.6.0-bundle\nexus-oss-webapp-1.6.0\bin\jsw\windows-x86-32文件夹,进去后直接点击nexus.bat启动Nexus的服务。

3.【管理员登入】当服务正常启动后在浏览器输入Nexus的URL:http://localhost:8081/nexus,注意这里默认的端口号是8081,打开页面后可以在右上角看到Login字样,点击登录,默认用户名admin,密码为admin123.

4. 【开启远程索引下载】 nexus默认是关闭远程索引下载功能的,主要是担心会造成对服务器的巨大负担,需要我们手工开启。开启的方式:点击Administration菜单下面的Repositories,将这三个仓库Apache Snapshots,Codehaus Snapshots,Maven Central的Download Remote Indexes修改为true。然后在这三个仓库上分别右键,选择Re-index,这样Nexus就会去下载远程的索引文件。

5. 【配置maven】 要让maven使用nexus作为私服,需要做一些设置,将maven安装目录下conf文件夹下的settings.xml拷贝到~/.m2/下(前面已经提到,即C:\Documents and Settings\用户名\.m2\repository目录),然后修改settings.xml文件,增加如下元素:
<mirrors>
  <mirror>
    <id>Nexus</id>
    <name>Nexus Public Mirror</name>
    <url>http://localhost:8081/nexus/content/groups/public</url>
    <mirrorOf>central</mirrorOf>
 </mirror>
</mirrors>

<profiles>
  <profile> 
     <id>nexus</id> 
     <repositories> 
       <repository> 
           <id>nexus</id> 
           <name>local private nexus</name> 
           <url>http://localhost:8081/nexus/content/g … /public</url> 
       </repository> 
     </repositories> 
   </profile> 
</profiles>
<activeProfiles> 
    <activeProfile>nexus</activeProfile> 
 </activeProfiles>    

 

6.【部署构建到nexus】要部署构件至Nexus,在distributionManagement中提供仓库URL,然后运行mvn deploy。Maven会通过一个简单的HTTP PUT将项目POM和构件推入至你的Nexus安装。需要配置你项目POM中distributionManagement部分的repository。 添加如下xml片段:
  
  <distributionManagement> 
  <repository> 
    <id>releases</id> 
    <name>Internal Releases</name> 
    <url>http://localhost:8081/nexus/content/r … eleases</url> 
  </repository> 
  <snapshotRepository> 
    <id>Snapshots</id> 
    <name>Internal Snapshots</name> 
    <url>http://localhost:8081/nexus/content/r … apshots</url> 
  </snapshotRepository> 
</distributionManagement>    
 

为了防止部署的时候出现认证错误,还需要在~/.m2/settings.xml中添加如下的服务器登录信息:
  
<server> 
  <id>releases</id> 
  <username>admin</username> 
  <password>admin123</password> 
</server> 
<server> 
  <id>Snapshots</id> 
  <username>admin</username> 
  <password>admin123</password> 
</server> 
   

至此,一个简单的Nexus私服就搭建完毕了,手都写酸了,具体细节性的配置和功能就不详细说了,后面搭建到服务器上后大家可以访问,通过界面去操作可能更直观。

<!-- END entry -->
分享到:
评论
1 楼 sxk4429 2011-08-06  
写得不错a

相关推荐

Global site tag (gtag.js) - Google Analytics