Ivy 2.0 作为 Apache 项目发布

阅读数:683 2008 年 1 月 20 日

话题:JavaDevOps语言 & 开发文化 & 方法

Ivy 发布了 2.0 beta 版,它是一个管理(记录、跟踪、解析和报告)项目依赖的工具,可与 Apache Ant 紧密集成。这是 Ivy 第一次作为 Apache 项目发布,它增强了与 Maven 2 仓库的兼容性,改进了并发支持,并做了少量重大的修改。根据发版说明,Ivy 具有如下特性:

  • 灵活性和可配置性——Ivy 是过程无关的,并且不依赖于任何方法论或结构。
  • 与 Ant 紧密集成——Ivy 除了可作为单独的工具使用之外,也提供了许多 Ant 任务,涵盖依赖解析、依赖报告和发布。

版本 2.0 修复了大量 Bug,同步更新了指南,除此之外,该版本也做了一些重要的修改:

  • 配置(configuration)被设置(settings)取代——为了避免混淆,从配置(用于模块配置)中分离出了设置(用于定制 Ivy)。
  • 设置加载检查——废弃了配置任务,用设置数据类型来取代,设置数据类型允许在单个 Ant build 脚本中使用多个设置。
  • ivyrep 不再是缺省的公共解析器——它已由 Maven 2 仓库 ibiblio 替代。
  • 相对路径解析——如果包含配置文件时用了相对路径,依赖解析可能会受影响,因为 2.0 的路径解析是相对于该配置所属的 Ivy 文件,而非当前目录。

只要不使用自定义插件,Ivy 2.0 就是向前兼容的。由于先前的版本是作为 Jayasoft 项目发布的,所以新的 2.0 版本在包名上有所改变,将 fr.jayasoft.Ivy 改成了 org.apache.ivy。

尽管 Ivy 增大了与 Maven 2 仓库之间的集成,但是项目领导者详细说明了两个项目之间的主要区别,以及Ivy 怎样对 Maven 2 中的依赖管理特性提供一种可用的替代。下面是几个重点:

Maven 2 和 Ivy 常被放在一起对比,但实际上两者是不同类型的工具。Ivy 仅提供依赖管理功能,但是 Maven 2 是一个软件项目管理综合工具,能够管理构建、报告、文档,以及根据中心化的信息来管理依赖。Ant 和 Ivy 2.0 集成在一起,与 Maven 2 进行比较才比较合适。

两个工具处理冲突管理(Conflict management)的方式是不同的,冲突管理指处理传递依赖时解决冲突的能力。Ivy 允许由模块定制冲突管理器和规则,而 Maven 2 的冲突管理则基于最近的定义(也就是说,一个模块依赖于 foo 1.0,这会导致模块的所有依赖都不能使用 foo 1.1)。

Maven 2 通过一个叫阶段(scope)的概念来处理其中的依赖配置。在 Maven 2 中,一个依赖只在定义它的测试阶段或构建阶段有效。Ivy 能够创建多配置映射,这些映射可将每个配置(需构建工件的声明)与其它模块的依赖绑定在一起,以此提供了更多的定制选项。

Maven 2 关于依赖管理的文档很有限,相对于此,Ivy 的文档内容更宽泛,包含大量的例子和指南,同时包括 FAQ。有些企业不能使用公共仓库,并在基于 Ant 的构建系统中有大量投资,对于这样的企业来说,Ivy 支持企业仓库的创建、与 Ant 紧密集成,这些附加的特征都使 Ivy 成为能替代 Maven 2 的依赖管理工具。

查看英文原文Ivy 2.0: Released As An Apache Project
译者简介: 王丽娟(Ivy Wang),一个快乐的程序员,持续从事 Java EE 中间件和 Java EE 企业应用的开发,关注软件架构技术。职业目标是成长为一名优秀的架构师。