`
weigang.gao
  • 浏览: 491141 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

理解Ant的Datatype和特征 (3.0)

 
阅读更多

本章的目标:通过Ant的Datatype和特征来控制Ant构建,打包并运行了一个Java程序这个过程。

用编程语言的术语讲,由Ant任务所展现的是运行时库提供的功能。任务只有和数据一同使用时才真正有用,因为它需要从数据中获取运行的细节。Java是一种面向对象的语言,也就是说它把数据和功能全部封装在类中。尽管Ant使用Java编写的,但它却将“完成工作”的任务和“任务所需”的数据区分开了————其中Datatype就代表了数据。Ant还有一个类似于变量的概念,特征。

 

为了把数据传递给任务,你需要在构建文件中创建并引用Datatype和特征。和任务一样,Datatype也只是一段XML,它可以罗列出一些任务使用的文件和资源。

 

预备知识)

就像Java有类和变量一样,Ant有Datatype和特征。

 

什么是Ant Dataype?

一个Ant Datatype等价于一个Java类————在底层,它们实际上就是由Java类实现的。Datatype存储了大量的构建过程中使用的复杂信息——比如,一个带编译的文件列表或者一个待删除的目录集。Ant必须管理这些信息,所以构建文件需要一种方法来描述它们。Ant Datatype应运而生。Datatype扮演了任务参数的角色。它们可以在一个任务内部声明,也可以在任务外部定义,并为它起个名字,然后再把这个名字传给任务。这样就能够跨多个任务共享一个Datatype了。

一个典型的Ant构建必须妥善处理文件和路径的问题,尤其是类路径。很自然地,Datatype能够处理文件和路径。文件集(fileset)和路径(path)这两种Datatype会在整个构建文件中随处可见。

"文件集"可以列出哪些文件需要编译,打包,复制,删除或者测试。例如,定义一个包含所有Java文件的文件集是相当简单的:

<fileset id="source.fileset" dir="src" includes="**/*.java" />

通过提供id属性,我们可以定义一个引用(reference)。这个引用能够在随后任何需要fileset的地方使用。例如,将源码带复制到另一个目录中,我们就可以再次使用source.fileset:

<copy todir="backup">

    <fileset refid="source.fileset" />

</copy>

只有构建文件预先定义了这个文件集(fileset),比如在之前的目标(target)中进行了定义,引用才能正常工作。Ant在遇到未定义的引用时,会产生错误并失败。

 

Ant特征

Ant特征并不是构建过程中共享信息的关键,更是使用者从外部控制Ant的重要手段。例如,假设出于测试的目的,需要修改构建文件,让它们使用一个不同版本的第三方库,那么完成这个修改非常简单:

ant -Dhost=localhost  (可以使用ant -help查看命令行可选项-D)

我们也可以在构建文件内部设置的特定的值。

<property name="host" value="localhost" />

无论哪种情况,现在Ant的host特征一定等于"localhost"。想要在构建文件中使用这个值,我们可以把它嵌入到任何字符串内。比如

<echo>host=${host}</echo>

如果特征已经定义,${host}将被替换为特征的值;否则,它还会保持原来的样子。

 

与Java变量不同,Ant的特征是不可变的(immutable):你不能修改它们。第一个使用某个特征的任务,项目或者用户一旦设置了特征值,它就在整个构建过程中固定不变了。这条规则与大多数语言是相反的,但是这条规则让你能够从外部控制构建文件。

 

分享到:
评论

相关推荐

    ant.jar下载

    org.apache.tools.ant.types.DataType org.apache.tools.ant.types.FileList org.apache.tools.ant.types.LogLevel org.apache.tools.ant.types.Resource org.apache.tools.ant.util.DateUtils org.apache....

    Ant权威指南(PDF电子书)

    核心任务是Ant中最为重要的一部分,第七章对此进行了全面的讲解和总结,帮助用户理解和使用Ant的核心任务。第八章则聚焦于可选任务,提供了任务汇总和参考,供有需要的用户使用。书中的两个附录分别讨论了Ant的未来...

    Ant权威指南

    《Ant权威指南》是一本深度解析Apache Ant工具的专业著作,旨在帮助读者全面理解和掌握这款强大的Java项目构建工具。Ant是Apache软件基金会开发的一款开源工具,主要用于自动化Java项目的构建过程,如编译、打包、...

    jackson-datatype-jsr310-2.13.1-API文档-中文版.zip

    赠送jar包:jackson-datatype-jsr310-2.13.1.jar; 赠送原API文档:jackson-datatype-jsr310-2.13.1-javadoc.jar; ...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-datatype-jsr310-2.12.5-API文档-中文版.zip

    赠送jar包:jackson-datatype-jsr310-2.12.5.jar; 赠送原API文档:jackson-datatype-jsr310-2.12.5-javadoc.jar; ...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-datatype-jdk8-2.13.1-API文档-中英对照版.zip

    赠送jar包:jackson-datatype-jdk8-2.13.1.jar; 赠送原API文档:jackson-datatype-jdk8-2.13.1-javadoc...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    jackson-datatype-jsr310-2.11.4-API文档-中英对照版.zip

    赠送jar包:jackson-datatype-jsr310-2.11.4.jar; 赠送原API文档:jackson-datatype-jsr310-2.11.4-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    ANT入门与提高.doc

    除了`project`、`target`和`task`,ANT还引入了`DataType`的概念,用于管理构建过程中涉及的各种数据结构。`DataType`主要包括: - `property`:用于存储键值对,便于在整个buildfile中引用和传递变量。 - `fileset...

    jackson-datatype-jsr310-2.9.7-API文档-中英对照版.zip

    赠送jar包:jackson-datatype-jsr310-2.9.7.jar; 赠送原API文档:jackson-datatype-jsr310-2.9.7-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    jackson-datatype-jsr310-2.9.5-API文档-中英对照版.zip

    赠送jar包:jackson-datatype-jsr310-2.9.5.jar; 赠送原API文档:jackson-datatype-jsr310-2.9.5-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    jackson-datatype-jsr310-2.10.4-API文档-中文版.zip

    赠送jar包:jackson-datatype-jsr310-2.10.4.jar; 赠送原API文档:jackson-datatype-jsr310-2.10.4-javadoc.jar; ...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-datatype-guava-2.8.0.zip

    1. **Guava数据类型的支持**:此模块扩展了Jackson的核心功能,使其能够理解和处理Guava的特殊数据类型,如ImmutableList、ImmutableSet、ImmutableMap以及Optional等。这使得开发者可以方便地在JSON和Guava数据结构...

    jackson-datatype-joda-2.12.2-API文档-中文版.zip

    赠送jar包:jackson-datatype-joda-2.12.2.jar; 赠送原API文档:jackson-datatype-joda-2.12.2-javadoc.jar; 赠送源代码:jackson-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-datatype-jsr310-2.11.4-API文档-中文版.zip

    赠送jar包:jackson-datatype-jsr310-2.11.4.jar; 赠送原API文档:jackson-datatype-jsr310-2.11.4-javadoc.jar; ...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-datatype-jsr310-2.9.7-API文档-中文版.zip

    赠送jar包:jackson-datatype-jsr310-2.9.7.jar; 赠送原API文档:jackson-datatype-jsr310-2.9.7-javadoc.jar; 赠送源代码:jackson-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-datatype-jsr310-2.13.1-API文档-中英对照版.zip

    赠送jar包:jackson-datatype-jsr310-2.13.1.jar; 赠送原API文档:jackson-datatype-jsr310-2.13.1-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    jackson-datatype-jsr310-2.9.8.jar

    jackson-datatype-jsr310-2.9.8.jar

    jackson-datatype-jdk8-2.12.5-API文档-中文版.zip

    赠送jar包:jackson-datatype-jdk8-2.12.5.jar; 赠送原API文档:jackson-datatype-jdk8-2.12.5-javadoc.jar; 赠送源代码:jackson-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

Global site tag (gtag.js) - Google Analytics