我是Ant新手,很难理解task
和target
等基本内容。
在线文档和书籍说target
是整个构建过程的一个阶段,而task
是最小的工作。但是,我发现很难理解这究竟是什么意思,
有人可以通过示例深入解释Ant中target
和task
的内容吗?
答案 0 :(得分:7)
目标包含一项或多项任务。
目标具有用户定义的名称,通常执行高级操作,如“编译代码”或“构建可部署的jar文件”。它只是一个方便的任务容器(并且还允许您指定其他目标的依赖关系)。
任务由Ant(或插件)提供并命名,通常是低级别的,如“复制文件”,“创建目录”。如果Ant manual无法满足您的需求,您可以创建新任务(请参阅built-in ones。
来自Ant tutorial:
的示例<target name="compile">
<mkdir dir="build/classes"/>
<javac srcdir="src" destdir="build/classes"/>
</target>
目标被称为“编译”(因为它旨在编译一些代码。但是,名称是任意的 - 我也可以称之为“doUsefulStuff”)。要完成此目标,我们指定要执行两个任务:
制作目录(使用mkdir
任务)
编译一些代码,并使用javac
任务
(免责声明 - 可能可以使用零任务创建目标 - 我没有检查过 - 但它们没什么用处。)
答案 1 :(得分:1)
另一个根本区别在于,当您运行ant时,您指示要执行的目标(不是任务)。因此,当您通过命令行调用ant时,指定ant [options] [target]
。如果您未指定目标,则会执行构建文件(build.xml)中指定为默认目标的目标。
如果在Eclipse中的ant视图上打开ant构建文件,则可执行选项是目标,而不是任务。
出于实际目的,目标进一步分为私人(aka,内部)和公共。不同之处在于公共目标的<target>
声明包含description
属性。我之所以提到这一点,是因为您可能希望在build.xml中的子步骤中分解/重构目标。子步骤可以是内部目标。