Ivy是一个比较轻量级的管理library依赖的工具,Ivy基于Ant,通过Ant的Task来运行。管理Library的工具很多,目前业界的标准是Maven,也是用得最多的一款工具。Ivy能够存活很多年,也有其道理,因为它比较灵活,可以根据自己的习惯来定义项目的结构。
这里采用Ivy的一个主要原因是相比Maven,Ivy对项目的目录结构并不做强制的要求,所有与项目运行、打包的事情都简化为Ant的Task,Ivy只是专心管好Library的依赖关系,除此之外它什么都不管。而Maven的问题在于,由于Maven提供了很多默认插件实现,于是Maven对项目的结构有要求。这一点在实际情况中会带来不便。
Ivy的配置文件自身没什么难点。只有配置节点中的conf属性有点难理解:
<dependency .... conf="compile->default,sources"/>
其实这个conf属性的作用主要是提供一个机制可以将所有的library进行分类。通过conf,可以将library映射到不同的目录以供不同的用处。这一点是在Ant中ivy-resolve这个task实现的
可以看看在设置了compile,test,provided这些不同的library类型之后,lib目录的结构
这种分类的主要好处在于可以隔离library的作用范围,比如我在打war包的时候,就只要根据compile目录下的library就可以了。