Sky's blog

我和我追逐的梦

常用链接

统计

其他链接

友情链接

最新评论

ivy中文参考文档(14)-ant任务(2)-resolve

1) 解析

    解析任务实际解析在ivy文件中描述的依赖,并将解析后的依赖放置到ivy缓存中。
    如果在resolve任务前没有调用configure任务,则将使用默认的configuration (等同于不带参数的调用configure).

    在这个任务调用之后,在ant中有四个属性被设置:
  • ivy.organisation
  • 设置为在用于解析的ivy文件中找到的组织名
  • ivy.module
  • 设置为在用于解析的ivy文件中找到的模块名
  • ivy.revision
  • 设置为在用于解析的ivy文件中找到的修订版本名,或者如果在制定的文件中没有修订版本名则是新生成的修订版本名。
  • ivy.resolved.configurations
  • 设置为解析好的configuration列表,逗号分隔。
    从1.2起:

    如果在最后一次解析后被解析的依赖发生了变化,一个额外的属性将被设置为true,否则为false。

ivy.deps.changed

    从2.0起:
    如果你设置参数checkIfCompiled为false(默认是true以保持向后兼容),属性ivy.deps.changed将不被设置。当你有进行多配置下的多模块构建时这容许完善你的构建。

    从2.0起:
    额外的,如果resolveId属性被设置,下列属性也将被设置:

    * ivy.organisation.${resolveId}
    * ivy.module.${resolveId}
    * ivy.revision.${resolveId}
    * ivy.resolved.configurations.${resolveId}
    * ivy.deps.changed.${resolveId}

    当ivy完成解析任务时,它将输出概要来说明解析了什么。概要看起来像这样:

---------------------------------------------------------------------
|                  |            modules            ||   artifacts   |
|       conf       | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
|      default     |   4   |   0   |   0   |   0   ||   4   |   0   |
---------------------------------------------------------------------

    这个表单给出一些关于依赖解析的统计。每行对应于一个解析了的配置。这个表单被划分为两个部分:

  • modules
    • number
    • 在这个配置下被解析的依赖模块的总数目,包括间接的依赖。
    • search
    • 这是需要访问仓库的依赖模块的数目。如果模块还不在缓存中则需要访问仓库,或者要求最新版本,或者一些其他情况(例如,根据checkModified)
    • dwnlded
    • 从仓库下载的依赖的ivy文件的数目。使用清理好的缓存,这个数目可以比模块的总数目少,如果一些依赖没有提供ivy文件。
    • evicted
    • 被冲突管理器逐出的依赖模块的数目。
  • artifacts
    • number
    • 在给定的配置中解析的制品的总数目。
    • dwnlded
    • 从仓库中实际下载的制品的数目。
2) Inline模式

    从1.4起 inline模式容许在没有ivy文件的情况下通过直接设置需要从仓库中被解析的模块调用resolve。对于安装发布的软件特别有用,例如ant任务。当inline设置为true,组织模块和修订版本属性被用于指定哪个模块应该从仓库中解析。

    注意:如果你想要设置标准ivy属性或者通过其他post-resolve任务重用inline解析的结果,类似retrieve, cachepath, report, ..., 你必须设置keep属性为true。


3) Resolve 模式

    从1.4起 解析模式容许定义当执行解析时ivy应该如果使用依赖修订版本约束。

    有两个模式可用:
  • default
  • 在这个模式下使用默认修订版本约束(通过 dependency 元素的rev属性来表示) 
  • dynamic
  • 在这个模式下使用动态修订版本约束(通过 dependency 元素的revConstraint属性来表示)
4) 并发

    在解析的过程中,ivy在解析缓存中创建一个文件。这个文件的创建并不是为了支持并发,意味着你不能在同样的解析缓存中,有同样模块的同样的resolveId的,两个并发解析。

    给开发人员的备注:
    在这个任务调用之后,有一个被解析的模块描述符的引用被设置在ant项目中,id为

"ivy.resolved.descriptor"

5) 属性

AttributeDescriptionRequired
file path to the ivy file to use for resolution
用来解析的ivy文件的路径
No. 默认是${ivy.dep.file}或在inline模式下不设值
conf a comma separated list of the configurations to resolve, or '*'.
用于解析的逗号分隔的配置列表,或者'*'
Since 2.0, you can also use '*(private)', '*(public)'. Note that when inline is true, the configuration '*' is equivalent as '*(public)'.
从2.0起 你也可以使用'*(private)', '*(public)'.注意当inline为true,配置'*'等同于'*(public)'.
No. 默认是${ivy.configurations}
refresh true to force Ivy to resolve dynamic revision in this resolve process, false to use cached resolved revision since 2.0
true 强制ivy在这次解析过程中解析动态修订版本,false使用缓存的解析好的修订版本,从2.0起
No. 默认是false
resolveMode the resolve mode to use for this dependency resolution process since 2.0
这次依赖解析过程要使用的解析模式,从2.0起
No. 默认使用settings中设置的解析模式
inline true to use inline mode, false to resolve an ivy file since 1.4
true使用inline模块,false解析ivy文件,从1.4起
No. 默认为false
keep true to keep the results of the resolve in memory, false to discard them. When this is false, the standard ivy properties won't be set and other postresolve-tasks (like retrieve and cachepath) won't be able to resuse the results of this resolve!
true在内存中保持这次的解析的结果,false 抛弃他们。当这个是false时,标准ivy属性不会设置而且其他post-resolve任务(类似retrieve和cachepath)将不能重用这次解析的结果!
No. 对于inline模式默认是false,其他情况默认为true
organisation the organisation of the module to resolve in inline mode since 1.4
在inline模式下用于解析的模块的组织名,从1.4起
Yes 在inline模式下必须,其他不是
module the name of the module to resolve in inline mode since 1.4
在inline模式下用于解析的模块的名称,从1.4起
Yes 在inline模式下必须,其他不是
revision the revision constraint to apply to the module to resolve in inline mode since 1.4
在inline模式下适用于要解析的模块的修订版本约束,从1.4起
No. 在inline模式下默认为 "latest.integration",在标准模式下不设置
branch the name of the branch to resolve in inline mode (since 2.1.0)
在inline模式下用于解析的分支的名字(从2.1.0起)
在inline模式下默认为没有分支,标准模式下没有意义
type comma separated list of accepted artifact types (since 1.2)
逗号分隔的可以接受的制品类型列表(从1.2起)
No. 默认为${ivy.resolve.default.type.filter}
haltonfailure true to halt the build on ivy failure, false to continue
true 在ivy失败时挂起整个构建,false 继续
No. 默认为true
failureproperty the name of the property to set if the resolve failed since 1.4
在解析失败失败时设置的属性名称,从1.4起
No. 默认没有属性被设置
transitive true to resolve dependencies transitively, false otherwise since 1.4
true解析间接依赖,false 不解析,从1.4起
No. 默认为true
showprogress true to show dots while downloading, false otherwise
true在下载过程中显示点,false不显示
No. 默认为true
validate true to force ivy files validation against ivy.xsd, false to force no validation
true强制对ivy文件用ivy.xsd验证,false强制不验证。
No. 默认为ivy的默认值(在配置文件中配置)
settingsRef A reference to the ivy settings that must be used by this task (since 2.0)
必须在这次任务中使用的ivy设置的引用(从2.0起)
No, 默认使用'ivy.instance'
resolveId 后面可以用来引用这次解析的结果的id No, 默认为'[org]-[module]'.
log 在解析过程中使用的日志设置(从2.0起)
可使用的选项是:
  • default
  • 默认日志设置,所有通常的消息都将被输出到控制台
  • download-only
  • 不输出除下载信息外的所有通常的消息。如果每个东西都在缓存里面的解析则不会输出任何消息。
  • quiet
  • 所有消息都不输出,让整个解析过程保持安静除非发生错误
No, 默认为'default'.
checkIfChanged When set to true, the resolve will compare the result with the last resolution done on this module, with those configurations
当设置为true时,解析将比较这次的结果和这个模块的最后一次解析,使用那些配置
No, 默认为'true'


6) 示例

<ivy:resolve file="path/to/ivy.xml"/>
    解析在path/to/ivy.xml文件中声明的所有依赖。

<ivy:resolve file="path/to/ivy.xml" transitive="false" />
    和上面相同,但是不解析间接依赖。

<ivy:resolve file="path/to/ivy.xml" conf="default, test"/>
    解析在path/to/ivy.xml文件配置default和test中声明的依赖。

<ivy:resolve file="path/to/ivy.xml" type="jar"/>
    解析在path/to/ivy.xml文件中声明的所有依赖,但是只下载jar制品。

<ivy:resolve organisation="apache" module="commons-lang" revision="2+" inline="true" />
    从仓库中解析commons-lang模块的2+修订版本,和它的依赖。

posted on 2009-08-02 13:18 sky ao 阅读(2301) 评论(0)  编辑  收藏 所属分类: project building


只有注册用户登录后才能发表评论。


网站导航: