<?xml version="1.0" encoding="UTF-8"?>
<!--name:表示项目名 ,
default:表示默认的运行目标,这个属性是必须的
basedir:表示项目的基准目录
-->
<project name="Ant" default="deploy" basedir=".">
<description>
描述
</description>
<!-- property:
Ant提供对所有系统属性的访问,就好像使用<property>任务定义了它们一样。 例如,$ {os.name}扩展为操作系统的名称。
此外,Ant具有一些内置属性 ,详情见 http://ant.apache.org/manual/properties.html#built-in-props
basedir : 项目baseir的绝对路径(由<project>的basedir属性设置)
ant.file : 构建文件的绝对路径。
ant.version : Ant的版本
ant.project.name : 当前正在执行的项目的名称;它在<project>的name属性中设置。
ant.project.default-target : 当前正在执行的项目的默认目标的名称;通过<project>的默认属性进行设置。
ant.project.invoked-targets : 调用当前项目时已指定(在命令行上,在IDE内,由<ant>任务等...)指定的目标的逗号分隔列表。 执行第一个目标时正确设置此属性。如果您在隐式目标(直接在<project>标记下)中使用它,则在未指定目标的情况下该列表将为空,而在这种情况下,该列表将包含项目的默认目标(对于嵌套在目标中的任务)。
ant.java.version : 检测到的JVM版本
ant.core.lib : ant.jar文件的绝对路径。
-->
<!-- property: 类似于常量,可以供给build.xml中的其他标签使用。
有两个特点:
- 大小写敏感
- 不可改变,谁先设定,之后的都不能改变。-->
<!--http://ant.apache.org/manual/Tasks/property.html-->
<!-- name 要设置的属性的名称。 value 要设置的属性的值-->
<property name="value" value="false"/>
<!-- location: 将属性设置为给定文件的绝对文件名。 如果此属性的值是绝对路径,则将其保留不变(将“ /”和“ \”字符转换为当前平台约定)。 否则,它将被视为相对于项目的基础路径并进行扩展。-->
<property name="location" location="src"/>
<!-- 包含属性文件格式的属性设置的类路径资源的名称.-->
<property resource="src/resources/application.properties"/>
<!--要加载的属性文件的位置-->
<property file="build.properties"/>
<!-- 包含属性格式设置的URL。-->
<!-- <property url="https://www.mysite.com/bla/props/foo.properties"/>-->
<!--
name:target的名称, Required:Yes
depends:此target的依赖,以逗号分隔的目标名称列表。 Required:No
if: 为了执行此目标必须设置的属性的名称,或者计算结果为“ true”的名称。 Required:No
unless: 为了执行此目标而必须设置的属性名称,或者某些值评估为“ false”。 Required:No
(注意: 在if / unless属性中只能指定一个属性名称。如果要检查多个条件,则可以使用从属目标来计算检查结果)
description: 该目标功能的简短描述 Required:No
extensionOf: 将当前目标添加到命名扩展点的从属列表。 从Ant 1.8.0开始 Required:No
onMissingExtensionPoint: 如果此目标尝试扩展缺少的扩展点,该怎么办。 (“失败”,“警告”,“忽略”)。 从Ant 1.8.2开始。 Required:No
-->
<target name="deploy"
depends="A,deploy.check"
if="deploy.run"
description="目标功能的简短描述">
<!-- task -->
<echo message="Hello world" file="build.properties" append="true"/>
<tstamp/>
</target>
<!--在if / unless属性中只能指定一个属性名称。如果要检查多个条件,则可以使用从属目标来计算检查结果-->
<target name="deploy.check">
<condition property="deploy.run">
<and>
<available file="ant.xml"/>
</and>
</condition>
</target>
<!-- 执行D时,依赖的正确执行顺序 A → B → C → D ,虽然D的depends="C,B,A" 按理应该是C → B → A 这样执行,
但是C依赖B,B以依赖A ,所以正确的应该是 A → B → C → D ,且 A,B 不会执行两次 即: A → B → C → B → A → D -->
<target name="A"/>
<target name="B" depends="A"/>
<target name="C" depends="B"/>
<target name="D" depends="C,B,A"/>
<!-- 内置任务列表 http://ant.apache.org/manual/tasklist.html -->
<!-- Tasks 这样定义,在任何Target执行时都会执行此Task . -->
<echo message="Hello world" append="true"/>
</project>