Maven最佳实践:管理依赖

 

【IT168 技术文档】

  有人认为Maven是一个依赖管理工具,当然这种想法是错误的(确切的说Maven是一个项目管理工具,贯穿了整个项目生命周期,编译,测试,打包,发布...),但Maven给人造成这种错误的印象也是有原因的,因为Maven的依赖管理十分强大,用好了Maven,你不再需要面对一大堆jar感到头大,依赖冲突,无用依赖等问题也能够得到有效的防止和解决。本节介绍如何用好Maven的依赖管理。

  最简单的依赖

  依赖是使用Maven坐标来定位的,而Maven坐标主要由GAV(groupId, artifactId, version)构成。因此,使用任何一个依赖之间,你都需要知道它的Maven坐标,关于如何寻找Maven坐标,《搜索Maven仓库》 一文可以帮助你。

  最简单的依赖如:

  Xml代码

< dependency >
  
< groupId > junit </ groupId >
  
< artifactId > junit </ artifactId >
  
< version > 4.4 </ version >
</ dependency >

  上例中我们声明了一个对junit的依赖,它的groupId是junit, artifactId是junit, version是4.4。这一组GAV构成了一个Maven坐标,基于此,Maven就能在本地或者远程仓库中找到对应的junit-4.4.jar文件。

  依赖归类

  随着项目的增大,你的依赖越来越多,比如说你依赖了一堆spring的jar,有org.spring.framework:spring-core, org.spring.framework:beans, org.spring.framework:spring-web, org.spring.framework:spring-mock。它们的groupId是相同的,artifactId不同。为了管理其版本,你对它们进行过统一的升级,逐个的将version改成了最新版。但是,显然,当POM很大的时候你说不定会犯错误,而当版本不一致的时候,一些诡异的兼容性问题就可能出现。

  对此,Maven有它的解决方案:

  Xml代码

< dependencies >
  
< dependency >
    
< groupId > org.spring.framework </ groupId >
    
< artifactId > spring-core </ artifactId >
    
< version > ${spring.version} </ version >
  
</ dependency >
  
< dependency >
    
< groupId > org.spring.framework </ groupId >
    
< artifactId > spring-beans </ artifactId >
    
< version > ${spring.version} </ version >
  
</ dependency >
  
< dependency >
    
< groupId > org.spring.framework </ groupId >
    
< artifactId > spring-web </ artifactId >
    
< version > ${spring.version} </ version >
  
</ dependency >
  
< dependency >
    
< groupId > org.spring.framework </ groupId >
    
< artifactId > spring-mock </ artifactId >
    
< version > ${spring.version} </ version >
  
</ dependency >
</ dependencies >

< properties >
  
< spring.version > 2.5 </ spring.version >
</ properties >

  这里我们定义了一个Maven属性,其名称为spring.version,值是2.5。在这个POM中,我们就能用${spring.version}的方式来引用该属性。我们看到,所有spring相关的依赖的version元素现在都成了${spring.version},当Maven运行的时候,它会自动用值2.5来替换这个引用。

  当我们需要升级spring的时候,只要更改一个地方便可,而且,你现在能很高的保证所有的spring依赖包都是同一个版本。

 

本文转自:http://tech.it168.com/a2009/0224/266/000000266570.shtml

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值