理想主义者的爱情观:持续集成之路——搭建Maven私服

来源:百度文库 编辑:中财网 时间:2024/04/29 07:48:34
在开发过程中,有时候会使用到公司内部的一些开发包,显然把这些包放在外部是不合适的。另外,由于项目一直在开发中,这些内部的依赖可能也在不断的更新。可以通过搭建公司内部的Maven服务器,将第三方和内部的依赖统一管理。

      这里使用Nexus来搭建本地的Maven服务器,过程比较简单。

 

       一、安装服务器

      1、下载

      我们可以在nexus的官网上找到它的相关介绍,下载地址是:http://nexus.sonatype.org/downloads/,在这里可以找到最新的版本,如果需要以前的版本,在官网上应该也可以找到下载地址。我下载的是:nexus-oss-webapp-1.8.0-bundle.tar.gz。关于Nexus的详细使用方法可以参照:Repository Management with Nexus.

      2、安装

      解压下载的文件:

      # tar xzvf nexus-oss-webapp-1.8.0-bundle.tar.gz

      解压后会在同级目录中,出现两个文件夹:nexus-oss-webapp-1.8.0和sonatype-work,前者包含了nexus的运行环境和应用程序,后者包含了你自己的配置和数据。

      3、启动nexus

      在上面的提到,nexus的运行环境在nexus-oss-webapp-1.8.0目录,下面就进入这个目录启动:

      # cd nexus-oss-webapp-1.8.0/bin/jsw/linux-x86-64/

      在这个目录下包含了一个文件夹和三个文件:lib、nexus、platform和wrapper,其中nexus就是启动命令。

      # ./nexus

      执行上面的命令,可以得到nexus命令的用法提示:start 命令启动,stop命令停止。下面启动nexus:

      # ./nexus start

      Starting Nexus OSS...

      Started Nexus OSS

      从控制台输出可以看到Nexus已经启动成功,我们可以通过log文件查看更详细的信息:

      # cd ~/nexus-oss-webapp-1.8.0/log

      # tail -f wrapper.log

      在log中可以看到nexus默认监听的端口是8081。那么我们就可以在浏览器中访问:http://host:8081/nexus,

     

     

       二、配置Nexus

       由于在新搭建的nexus环境中只是一个空的仓库,所以第一步就是要和远程的Maven中心仓库进行同步。

        

      

        

       如果在Reindex之后,并没有同步到远程的仓库,可以检查每个仓库的设置。下面是Maven Central的设置:

 

      

 

        三、在项目中使用私服

      

       在完成了上面的配置后,就可以将项目中默认的Repository切换为本地的私服了,只需要在pom.xml中增加repositories就可以了:

      

view plainprint?
  1.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  2.   4.0.0  
  3.   
  4.   org.maven.demo  
  5.   MavenDemo  
  6.   0.0.1-SNAPSHOT  
  7.   jar  
  8.   
  9.   MavenDemo  
  10.   http://maven.apache.org  
  11.   
  12.       
  13.           
  14.               
  15.                 true  
  16.               
  17.             public  
  18.             Public Repositories  
  19.             http://172.28.189.138:8081/nexus/content/groups/public/  
  20.           
  21.       
  22.       
  23.           
  24.             public  
  25.             Public Repositories  
  26.             http://172.28.189.138:8081/nexus/content/groups/public/  
  27.           
  28.       
  29.       
  30.           
  31.             junit  
  32.             junit  
  33.             4.8.1  
  34.             jar  
  35.             compile  
  36.           
  37.       
  38.       
  39.     UTF-8  
  40.     
  41.   

 

       将pom.xml保存后,再回过头来了看去nexus管理界面看,就会发现junit已经被下载到本地的nexus服务器中了。

(接上篇)在新创建了项目之后,可以看到目录结构:

 

     从图中可以看出,Maven自动将项目源文件和测试用例分别放到了不同的目录下,但是却使用了相同的包名。这样生成可执行的产品时,就比较容易将产品代码和测试代码隔离开;同时测试用例也可以直接引用同一包中被测试的类,既符合了JUnit的规范,也使程序更易读。

      正如上图中标示,新建项目的JRE默认为J2SE-1.4,这会导致1.5之后的一些新特性得不到支持。可以通过下面的方法修改:

 

 

      2、使用Maven管理依赖

 

      在以往的开发中,我一般都会把用到的依赖都放到一个文件夹下,需要什么就像里面添加什么,然后和源文件一同放入到SVN中。其他开发人员在检出项目时会把这些包一起检出。但是这样做有几个弊端:

    (1)最明显的一个问题,就是代码库会变得异常地大,有时候会上百兆,检出的时间会比较长

   (2)为了保持每个开发人员的开发环境的设置都是独立的,我们会要求开发人员不能提交Eclipse项目配置文件,如.project、.settings等。这就需要每个开发人员必须自己配置自己Eclipse的构建路径(BuildPath)。如果有新的依赖提交,而其他开发人员不知晓的情况,就可能编译会出错;

    (3)Java的库文件对版本的要求比较严格,而有些第三方包发布并没有说明其所依赖的版本,需要自己苦苦寻找;

    (4)虽然我们并不常会看第三方库的源代码,但是有时候也需要进去了解一下,帮助解决问题。这时就需要自己在Eclipse中指定源文件的位置。

    而Maven很好的解决了以上问题,只需要一个配置文件,就可以搞定所有了。比如要在上面的MavenDemo项目中引入JUnit:

   

         点击OK后,就会将依赖自动下载到本地,并添加到项目的构建路径中,

 

           查看pom.xml的内容,就会发现依赖在文件中的配置:

view plainprint?
  1.   
  2.       
  3.         junit  
  4.         junit  
  5.         4.4  
  6.         jar  
  7.         compile  
  8.       
  9.   

      如果以后需要更改版本,只需要修改这里的版本号即可,当然可以从依赖的页面中删除和添加。

     在上面提到了Maven可以自动管理依赖的依赖,为了显示这个强大的功能,特意引入了一个spring-core的包,然后切换到pom的DependenciesGraph页面,可以看到,虽然只引入了一个spring-core,但是Maven却自动发现了它依赖的另外两个包,省去我们的很多麻烦。

 

     

        3. 运行测试用例

        在/src/test/java编写一个测试用例,然后直接在项目名称上点击右键,从菜单中选择Run as-->maven test。在运行过程中,Maven会自动下载需要的包,并且给出一份详细的测试报告。

       

 

      这种方式可以运行项目中所有用例。当然可以依照原来的习惯,在项目目录中选择一个文件,按照JUnit的方式运行。