英文原文:http://ant.apache.org/ivy/history/2.1.0-rc1/concept.html
因内容太长而拆分,下面是第一部分:
一. 依赖解析器
依赖解析器是ivy中使用的可插入是的类:
* 发现ivy文件中的依赖
* 下载依赖的制品
制品下载的概念很大:制品可以在网站上,或者在你机器上的本地文件系统上。下载是从仓库取文件放到ivy缓存的行为。
而且,解 析器的职责是找到ivy文件并下载制品,这有助于实现不同的解析策略。
如你所见,依赖解析器可以被认为是负责描述仓库的类。
如 果你想知道在ivy中有哪些解析器可用,你可以转到对应的配置章节。
二. 模块配置说明
模块配置在术语页面已经被描述,是用来使用或者构建模块的方法。配置是ivy的重要部分,需要更多的说明。
当你定义一种方式来 使用或者构建模块时,你可以在这个配置中定义哪些制品被这个模块发布,并且你还可以在这个配置中定义哪些依赖是需要的。
此外,因为ivy中的依赖是以模块而不是制品来表述,因此能够在你定义的模块中定义依赖的配置是必须的就显得很重要了。这就是配 置映射。
如果你仅仅使用单一的模块并且不想操心配置,你可以不理会他们。它们依然存在,导致ivy无法在没有配置的情况下工作。但是大多 数时候,如果你不定义任何东西,ivy会假设你的模块的制品在所有的配置中发行,并且在所有的配置中所有的依赖配置都是必须的。并且 在单一模块的情况下工作正常。但是无论何时你想在一个模块内部分隔事物,或者更多的控制发行的东西并通过依赖解析,配置会满足你 的大多数要求。
更多如何定义模块配置,定义制品用哪个配置发布和定义配置映射的细节,请参考ivy文档。配置教程是一个可以教会你学到更多关于 这个概念的东西的好地方。
三. 变量
在配置的过程中,ivy容许定义ivy变量。ivy变量可以被视为类似ant属性,而且使用方式很相似。特别是,在配置文件中使用属性标签 来装载包含ivy变量和值的属性文件。
但是,ant属性和ivy变量之间的最大差别在于ivy变量可以被覆盖,然而ant属性不可以,而且它 们在不同的环境下定义。
实际上当配置完成时,所有ant属性都被导入到ivy变量(如果是从ant中调用ivy)。这意味着如果你在调用配 置之后定义一个ant属性,它讲无法作为一个ivy变量来访问。另一方面,ivy变量不能导出到ant,所有如果你在ivy中定义ivy变量,不要 试图作为ant属性来使用它们。
为了使用ivy变量,你必须遵循和ant属性相同的语法:
${variablename}
这个的variablename是变量名
最后,同样重要的是知道变量代入的时间点。带入是尽可能快的。这意味着当ivy遇到一个变量引用,如果这个变量被定义了,它会试 图代入。结果是,这个变量在之后的任何改动都不会影响这个已经代入的值。
此外,在ant环境中,一串变量将通过ant属性文件装载机 制被默认设值(实际上他们被作为ant属性第一次装载,然后被导入为ivy变量,见ant任务),甚至在ant属性自身也将在装载时立即代入 ,有效地使得仅仅通过ivysettings.properties文件来覆盖某些变量变得没有可能。某些变量因此只能通过ant属性来重载。
此外,同 样非常重要的是理解ivy变量和ivy模式标记(pattern tokens)之间的不同。请翻阅模式的章节来理解什么是模式标记。