Ant_属性、目标、依赖的讲解(002)

定义与使用属性

<property name="metal" value="beryllium"/>

为了在生成文件的其他部分引用这个属性,使用如下的语法:
${metal}

例如为了使用这样的一个值,它是另一个属性的值的组成部分,将标签写成下面这样
<property name="metal-database" value="${metal}.db">

范例:
<?xml version="1.0" encoding="utf-8"?>

<project default="second">

<description>
  hello
</description>
<property name="hello" value="myvalue"></property>

<target name="init" description="targetone">
  <mkdir dir="welcome"/>
  <mkdir dir="to"/>
  <mkdir dir="learning"/>
  <mkdir dir="java"/>
  <mkdir dir="${hello}"/>
</target>

<target name="second" depends="init" description="targettwo">
  <delete dir="welcome"/>
  <delete dir="to"/>
  <delete dir="learning"/>
  <delete dir="java"/>
</target>

</project>

执行命令ant init


location属性

经常用于引用文件系统上的文件或目录,但对于使用不同路径分隔符(例如\或/),这样可能在跨越不同平台导致问题。
Ant的location属性专门设计用以平台无关的方式包含文件系统路径。像下面这样使用location来代替value

<property name="database-file" location="archive/databases/${metal}.db"/>

用于location属性的路径分隔符将被转换为当前平台的正确格式,而且由于文件名是相对的,它被认识是相对于项目的基目录,
我们同样可以写成下面这样

<property name="database-file" location="archive\databases\${metal}.db"/>

这个标签的两个版本都会在不同的平台上具有相同的行为


定义依赖关系

Ant采用一种灵活的方法来定义依赖关系
每个目标的定义依据的是它在执行之前必须完成其他所有依赖的目标,这是target元素的depends属性来实现的

范例:
<target name="init"/>
<target name="preprocess" depends="init"/>
<target name="compile" depends="init,preprocess"/>
<target name="package" depends="compile"/>

这种方法允许您执行项目任何阶段的生成过程,Ant会首先执行已定义的先决阶段。
在上面的例子中,如果让Ant完成compile步骤,它将判断除首先执行init和preprocess这两个目标。
init目标将不依赖于其他任何目标,因此它首先被执行。然后Ant检查preprocess target,发现它依赖于init目标,
由于已经执行了init目标,ant将不会再次执行它,因而开始执行preprocess目标。最后开始执行compile任务本身。

ps:注意目标出现在生成文件中的顺序并不重要,执行顺序是由depends属性唯一确定的

范例:
<?xml version="1.0" encoding="utf-8"?>

<project default="package">

<!--
<description>
  hello
</description>
<property name="hello" value="myvalue"></property>

<target name="init" description="targetone">
  <mkdir dir="welcome"/>
  <mkdir dir="to"/>
  <mkdir dir="learning"/>
  <mkdir dir="java"/>
  <mkdir dir="${hello}"/>
</target>

<target name="second" depends="init" description="targettwo">
  <delete dir="welcome"/>
  <delete dir="to"/>
  <delete dir="learning"/>
  <delete dir="java"/>
</target>
-->

<target name="init"/>
<target name="preprocess" depends="init"/>
<target name="compile" depends="init,preprocess"/>
<target name="package" depends="compile"/>
</project>


范例:
打开eclipse,新建java项目

window-preferences-general-editors-file associations- Add (build.xml)- 设置build.xml默认的编辑器为Ant Editor

在项目的根下新建build.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project name="myAntProject" basedir="." default="package">

<property name="hello" value="hello123"/>
<property name="world" value="world123"/>

<target name="init">
  <mkdir dir="${hello}"/>
  <mkdir dir="${world}"/>
</target>

<target name="preprocess" depends="init">
</target>

<target name="compile" depends="init,preprocess">
</target>

<target name="package" depends="compile">
</target>

</project>

window-show view-ant,在ant视图加载build.xml文件
右边的节点可以双击执行

ps:ant可以进行调试

posted @ 2012-06-08 01:08  雪中飞雁  阅读(195)  评论(0)    收藏  举报