【题目】使用
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/