# Ant之Target 和Properity:

3838人阅读 评论(0)

1 Target

<target name="A"/>
<target name="B" depends="A"/>
<target name="C" depends="B"/>
<target name="D" depends="C,B,A"/>

Ant默认会根据depends后面所列的值从左到右的排列关系进行执行，如果target D，先执行C，B，A。

<target name="build-module-A" if="module-A-present"/>

<target name="build-own-fake-module-A" unless="module-A-present"/>

<target name="myTarget.check" depends="init">
<condition property="myTarget.run">
<and></and>
</condition>
</target>

<target name="myTarget" depends="myTarget.check" if="myTarget.run">
<echo>Files foo.txt and bar.txt are present.</echo>
</target>

myTarget.check:

myTarget:
[echo] Files foo.txt and bar.txt are present.

all:

BUILD SUCCESSFUL
Total time: 0 seconds

Important: the if and unless attributes only enable or disable the target to which they are attached. They do not control whether or not targets that a conditional target depends upon get executed. In fact, they do not even get evaluated until the target is about to be executed, and all its predecessors have already run.

A target has the following attributes:

 Attribute Description Required name the name of the target. Yes depends a comma-separated list of names of targets on which this target depends. No if the name of the property that must be set in order for this target to execute, or something evaluating to true . No unless the name of the property that must not be set in order for this target to execute, or something evaluating to false . No description a short description of this target's function. No extensionOf Adds the current target to the depends list of the named extension-point . since Ant 1.8.0. No onMissingExtensionPoint What to do if this target tries to extend a missing extension-point . ("fail", "warn", "ignore"). since Ant 1.8.2. No. Not allowed unless extensionOf is present. Defaults to fail .

since Ant 1.8.0.

Extension-Points are similar to targets in that they have a name and a depends list and can be executed from the command line. Just like targets they represent a state during the build process.

Unlike targets they don't contain any tasks, their main purpose is to collect targets that contribute to the desired state in their depends list.

Targets can add themselves to an extension-points's depends list via their extensionOf attribute. The targets that add themselves will be added after the targets of the explicit depends-attribute of the extension-point, if multiple targets add themselves, their relative order is not defined.

The main purpose of an extension-point is to act as an extension point for build files designed to be imported . In the imported file an extension-point defines a state that must be reached and targets from other build files can join the depends list of said extension-point in order to contribute to that state.

For example your imported build file may need to compile code, it might look like:

<target name="create-directory-layout">
...
</target>
depends="create-directory-layout"/>
...
</target>

Call-Graph:
create-directory-layout --> 'empty slot' --> compile

And you need to generate some source before compilation, then in your main build file you may use something like

<target name="generate-sources"
...
</target>

Call-Graph:
create-directory-layout --> generate-sources  --> compile

This will ensure that the generate-sources target is executed before the compile target.

Don't rely on the order of the depends list, if generate-sources depends on create-directory-layout then it must explicitly depend on it via its own depends attribute.

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：2220257次
• 积分：21555
• 等级：
• 排名：第352名
• 原创：370篇
• 转载：316篇
• 译文：1篇
• 评论：146条
评论排行
最新评论