Ant - 任务和目标的区别

5
我是一个新手,对于Ant的一些基本概念,如tasktarget有些困惑。
在线文档和书籍说target是整个构建过程中的一个阶段,而task是最小的工作单元。然而,我发现很难理解这到底意味着什么。
有人能够深入地解释并举例说明Ant中的targettask是什么吗?
2个回答

8

目标包含一个或多个任务。

目标具有用户定义的名称,通常执行高级操作,例如“编译代码”或“构建可部署的jar文件”。它只是任务的方便容器(还允许您指定对其他目标的依赖关系)。

任务由Ant(或插件)提供和命名,并且通常是像“复制文件”、“创建目录”这样的较低级别任务。如果内置任务无法满足您的需求,可以创建新任务(请参阅Ant手册)。

来自Ant教程的示例:

<target name="compile">
    <mkdir dir="build/classes"/>
    <javac srcdir="src" destdir="build/classes"/>
</target>

目标称为“编译”(因为它旨在编译一些代码。但名称是任意的 - 我也可以叫它“doUsefulStuff”)。要完成此目标,我们指定要执行两个任务:
  1. 使用mkdir任务创建一个目录
  2. 编译一些代码,并使用javac任务将编译后的类放入步骤1中创建的目录中
(免责声明-可能可以创建零任务的目标-我没有检查过-但它们不会有什么用处)。

“目标是编译”究竟意味着什么?我的意思是这表示了什么? - SexyBeast
谢谢。我们可以有自定义的任务和目标,还是必须使用Ant指定的任务? - SexyBeast
如果内置的任务无法满足您的需求,您可以创建新的任务(请参阅Ant手册)。 - DNA
谢谢。那非常有帮助。 - SexyBeast

1
另一个基本的区别是,当您运行ant时,您指示要执行的是目标(而不是任务)。因此,当您通过命令行调用ant时,您需要指定ant [options] [target]。如果您没有指定目标,则将执行在您的构建文件(build.xml)中指定为默认的目标。
如果您在Eclipse中的ant视图中打开ant构建文件,则可执行的选项是目标,而不是任务。
出于实际目的,目标进一步分为私有(也称为内部)和公共。区别在于公共目标的<target>声明包含description属性。我提到这个因为您可能想将目标分解/重构为build.xml中的子步骤。子步骤可以是内部目标。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接