ivy中文参考文档(11)-ant任务

1) ant任务

使用ivy的主要和最频繁的方式是在ant构建文件中。不过,ivy也可以作为独立的应用被调用。

如果你使用ant版本1.6.0 或更高,你仅仅需要添加ivy的命名空间到你的项目中(你的project标签的属性)

xmlns:ivy="antlib:org.apache.ivy.ant"

这样你就可以调用ivy任务了。

如果你想让你的构建处理ivy.jar,不管是在ant的lib目录还是在本地的lib目录。你可以类似这样使用任务定义

<path id="ivy.lib.path">
     <fileset dir="path/to/dir/with/ivy/jar" includes="*.jar"/>
</path>
<taskdef resource="org/apache/ivy/ant/antlib.xml"
          uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>

结合项目命名空间中的antlib定义,它将从你的ant类库或者本地目录(在这个例子中试path/to/dir/with/ivy/jar)装载ivy类。

如果你使用ant1.5.1或者更高,你不得不定义你在你的构建文件中使用的任务。例如:

<taskdef name="ivy-configure" classname="org.apache.ivy.ant.IvyConfigure"/>
   <taskdef name="ivy-resolve" classname="org.apache.ivy.ant.IvyResolve"/>
   <taskdef name="ivy-retrieve" classname="org.apache.ivy.ant.IvyRetrieve"/>
   <taskdef name="ivy-deliver" classname="org.apache.ivy.ant.IvyDeliver"/>
   <taskdef name="ivy-publish" classname="org.apache.ivy.ant.IvyPublish"/>

注意:上面列出的任务并不是详尽。为了完整的有对应类的任务列表,请查看svn中的或者你使用的版本的antlib.xml

然后你可以使用任务,但是检查他们的名字,下面的例子假设你使用ivy命名空间(ivy:xxx任务),不过对于ant1.5你不能使用命名空间 ,如果你想遵循上面的任务定义可以使用ivy-xxx任务。

如果你使用低于1.5.1的ant版本,你不能使用ivy任务...你应该作为外部程序来调用ivy。

2) 从ant中调用ivy: 开始步骤

一旦你的构建文件可以调用ivy任务,最简单的使用ivy的任务就是不带任何参数的调用ivy的retrieve任务。

<ivy:retrieve />

这将使用默认值调用ivy,在很多项目中是可行的。实际上,它等同于

<target name="resolve">
     <ivy:configure />

     <ivy:resolve file="${ivy.dep.file}" conf="${ivy.configurations}" />

     <ivy:retrieve pattern="${ivy.retrieve.pattern}" conf="${ivy.configurations}" />
</target>

时间: 2024-11-01 00:57:25

ivy中文参考文档(11)-ant任务的相关文章

ivy中文参考文档(17)-ant任务(5)-publish

1) publish 发行当前模块的制品和已解析的描述符(已交付的ivy文件). 这个任务的目的是发行当前模块描述符和它的声明的发行制品到仓库中. 所有制品必须在这个任务调用前创建.它不会自己创建制品,而是只期望能在制品正则表达式之处的地方找到他们. 目标仓库通过在当前ivy设置中声明的解析器的名字来给出.查阅设置文件来获取解析器支持制品发行的细节. 同时也发行已交付的ivy文件(除非你不想),并且甚至会deliver它,如果ivy文件没有在上一次delever调用时交付或者forcedeliv

ivy中文参考文档(13)-ant任务(1)-buildlist

buildlist任务用于获取按照ivy依赖信息从小到大排序的文件(通常是build.xml文件) 列表,或者相反(从1.2之后) 这个任务在结合subant构建相关项目集合时特别有效, 可以确保依赖在其他依赖它的模块之前被构建. 当你要排序的模块的ivy.xml不包含修订版本号,在依赖上定义的rev属性将不被使用. 当你要排序的模块的ivy.xml包含修订版本号,修订版本号将被使用.如果修订版本号和依赖描述不匹配,将会记录警告日志而模块被 认为是不同的模块. 从1.3版本起,root属性也可以

ivy中文参考文档(21)-ant任务(9)-post resolve tasks

1) post resolve tasks 在ivy中有几个任务被认为是后解析任务(post resolve task),并相应地共享公用行为和设置. 这些任务是: * retrieve * cachefileset * cachepath * artifactproperty (since 2.0) * artifactreport (since 2.0) 所有这些任务都将自动触发resolve,如果: * 在当前构建中没有任何一个keep属性设置为true的任务被调用 * 组合和模块没有设置

ivy中文参考文档(20)-ant任务(8)-cachefileset

1) cachefileset 为配置构建一个有ivy缓存中的制品组成的ant fileset 从1.2版本起). 这是一个后解析任务,有所有后解析任务共有的所有行为和属性.注意这个任务不依赖retrieve,因为构建的fileset是由ivy缓存中的 制品直接构成的. 请尽量采用retrieve + 标准ant 路径创造,这使得你的构建不那么依赖ivy(一旦制品被正确的获得,ivy不再需要). 构建fileset在ant中通过使用给定的id注册,从而可以像其他任务ant fileset一样通过

ivy中文参考文档(19)-ant任务(7)-cachepath

1) cachepath 为解析过的模块配置构建一个由在ivy 缓存(或者取决于useOrigin 设置的原始位置)中的制品组成的ant path. 这是一个后解析任务,有所有后解析任务共有的所有行为和属性. 如果你想让你的构建更少的依赖ivy,你可以考虑使用retrieve 任务.一旦制品被正确的获得,你可以使用标准ant path,这使得ivy 不再必不可少. 构建path在ant中通过使用给定的id注册,从而可以像其他任务ant 路径一样通过使用refid来使用. 2) 属性 属性 描述

ivy中文参考文档(18)-ant任务(6)-deliver

1) deliver 交付当前模块的解析好的描述符,而且可能执行依赖的递归交付. 这个任务主要做两个事情: 1.生成一个解析好的ivy 文件 这个任务生成一个当前模块的解析好的描述符,基于最后一次解析.解析好的ivy文件包含交付的模块的已更新信息,例如修订版本和 状态. 此外,所有被包含的配置的文件将包含在ivy文件中,而且变量被他们的值替代. 最终,在解析好的ivy文件中,动态修订版本被在解析过程中找到的静态的修订版本替换,因此这些ivy文件后面可以安全的使用来获得 相同的依赖(前提条件是修订

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

1) 解析 解析任务实际解析在ivy文件中描述的依赖,并将解析后的依赖放置到ivy缓存中. 如果在resolve任务前没有调用configure任务,则将使用默认的configuration (等同于不带参数的调用configure). 在这个任务调用之后,在ant中有四个属性被设置: ivy.organisation 设置为在用于解析的ivy文件中找到的组织名 ivy.module 设置为在用于解析的ivy文件中找到的模块名 ivy.revision 设置为在用于解析的ivy文件中找到的修订版

ivy中文参考文档(16)-ant任务(4)-configure

1) configure configure任务用于通过xml设置文件来配置ivy. 查阅设置文件来获取设置文件自身的细节. 从2.0起可以通过sttings声明来配置ivy.和这个任务的不同之处在于当使用settings声明时,ivy的配置在settings第一次需要时(例 如当你做一次resolve)完成,而configure任务立即执行一次配置,这样如果有某些错误发生可以容易看到. 2) 属性 属性 描述 必要 settingsId The settings id useable in t

ivy中文参考文档(15)-ant任务(3)-retrieve

1) retrieve retrieve任务复制解析好的依赖到你的文件系统的任何位置. 这是一个post resolve任务,带有所有post resolve任务共有的所有的行为和属性. 从1.4起 这个任务甚至可以根据依赖解析的结果用实际应该存在的东西来同步目标目录.这意味着如果设置sync为"true",ivy不仅将 复制必要的文件,而且它还会删除那些不再需要在那里的文件. 同步实际上是删除root目标目录下不再是retrieve任务必须的所有文件和目录. root目标目录是 在目