【题目】使用
     
     
      
       ivy
      
     
     
      构建
     
     
      
       jar
      
     
     
      包的依赖关系
     
     
     
    
   
    
     
     
    
   
    
     
      【提要】
     
     
     
    
   
    
     
      
       
        1
       
       
       
      
     
    
    
     
      要解决的问题
     
     
     
    
   
    
     
      
       
        2
       
       
       
      
     
    
    
     
      关于网络上的
     
     
      
       repository
      
     
     
      介绍
     
     
     
    
   
    
     
      
       
        3
       
       
       
      
     
     
      
       Maven
      
     
    
    
     
      和
     
     
      
       Ivy
      
     
     
      的工作原理和比较
     
     
     
    
   
    
     
      
       
        4
       
       
       
      
     
     
      
       ivy
      
     
    
    
     
      运行环节的配置
     
     
     
    
   
    
     
      
       
        5
       
       
       
      
     
    
    
     
      配置中的细节问题
     
     
     
    
   
    
     
     
    
   
    
     
      【内容】
     
     
     
    
   
    
     
      
       
        1
       
       
       
      
     
    
    
     
      要解决的问题
     
     
     
    
   
    
     
      使用
     
     
      
       java
      
     
     
      架构的开源框架最为头痛的事情就是要面对一大堆相互之间存在依赖关系的
     
     
      
       jar
      
     
     
      包。有以下几个原因造成了它们之间关系的复杂性:
     
     
     
    
   
    
     
      首先,
     
     
      
       jar
      
     
     
      包之间的依赖关系是有传递性的,即
     
     
      
       A.jar
      
     
     
      依赖
     
     
      
       B.jar
      
     
     
      而
     
     
      
       B.jar
      
     
     
      又依赖
     
     
      
       C.ja
      
     
     
      ,以此类推
     
     
      
       ……
      
     
     
      ,这样要使用
     
     
      
       A.jar
      
     
     
      就必须找到所有与之有直接或间接的依赖关系的
     
     
      
       jar
      
     
     
      包;
     
     
     
    
   
    
     
      其次,是依赖关系与
     
     
      
       jar
      
     
     
      包的不同版本密切相关,例如
     
     
      
       hibernate-3.2.6.ga.jar
      
     
     
      依赖
     
     
      
       asm-1.5.3.jar
      
     
     
      ,而
     
     
      
       spring-2.0.6.jar
      
     
     
      依赖
     
     
      
       asm-2.2.3.jar
      
     
     
      ,必须解决两个不同版本的
     
     
      
       asm
      
     
     
      之间的版本冲突;
     
     
     
    
   
    
     
      其三是一个开源框架往往是一组
     
     
      
       jar
      
     
     
      包的组合,而框架间的依赖关系分为许多不同情况下的依赖,如:编译时依赖、运行时依赖、测试依赖等,不同状态下需要取用不同的
     
     
      
       jar
      
     
     
      包文件;
     
     
     
    
   
    
     
      其四是
     
     
      
       jar
      
     
     
      包的下载、升级和管理,一个框架中
     
     
      
       jar
      
     
     
      包间达成的依赖关系可能是非常复杂的!管理这些
     
     
      
       jar
      
     
     
      包不胜其烦,一个
     
     
      
       jar
      
     
     
      包的升级可能导致必须升级更替一系列的
     
     
      
       jar
      
     
     
      包文件。
     
     
     
    
   
    
     
     
    
   
    
     
      
       
        2
       
       
       
      
     
    
    
     
      关于网络上的
     
     
      
       repository
      
     
     
      介绍
     
     
     
    
   
    
     
      
       maven2
      
     
     
      出现部分地解决了上述问题,它的思想就是自动解决
     
     
      
       jar
      
     
     
      的依赖关系问题,它和
     
     
      
       IVY
      
     
     
      一样是一个关于项目构建和测试的管理工具,理解这类工具的工作原理,首先要了解网上开源社区里面的所谓
     
     
      
       repository
      
     
     
      (仓库)系统,它和
     
     
      
       maven
      
     
     
      是配套使用的,粗略看起来,可以理解为一个在远程服务器上的一个大型的、包括了各种各样的
     
     
      
       jar
      
     
     
      文件的下载服务器,但是它绝不像下载服务器那样简单,我们可以实际看看它的结构:
     
     
     
    
   
    
     
      
       
        2.1
       
       
       
      
     
    
    
     
      可供下载
     
     
      
       jar
      
     
     
      包的地址
     
     
      
       (
      
     
     
      即:
     
     
      
       maven.repo.remote)
      
     
     
      的几个镜像站点
     
     
     
    
   
    
     
      
       http://www.apache.org/dist/java-repository/
      
     
    
   
    
     
      
       http://apache.binarycompass.org/java-repository/
      
     
    
   
    
     
      
       http://www.bluesunrise.com/maven/
      
     
    
   
    
     
      
       http://fisheye5.cenqua.com/browse/glassfish/repo/
      
     
    
   
    
     
      
       http://dist.codehaus.org/
      
     
    
   
    
     
      
       http://source.concord.org/repository/
      
     
    
   
    
     
      
       http://www.ganet.org/maven/
      
     
    
   
 
