看后要回帖的(绝对经典)
现在我们继续。。。。
首先在你看这篇文章之前,你必须看过我前面所写的文章。如果没看过,对不起这篇文章不适合你学习技术。
这篇文章主要是讲述Ant的除了property的全局变量DataType的
DataType的种类有
- argument 主要是传递命令行参数的
- environment 一看就是环境变量
- filelist 文件列表
- fileset 设置文件位置,将要传的文件组织在一起(我们在ant 开发2中已经看过了)
- patternset 模式组织在一起
- filterset 将过滤器组织在一起
- path 设置环境(上文已经用到)
- mapping 输出和输入的对应关系
现在就具体的说明上面的DataType。。。。。。
1.argument的标签为<arg>
<arg>标签主要是在apply,exec,java中使用(以上的都是标签名)
其属性名为:file,path,value,line
具体操作同在cmd中输入,如果你想在cmd中用java -version
那么ant中输入为
<arg line="java" /> <arg line="-version" />
如果路径中有空格的话 请用value这个属性代替line。
以上也可以写成
<arg line="java -version" />
还有就是<arg path="/temp ;/tmp" />(我写的是windows的版本,主要是我Unix没用过)
相当于c:\temp ;c:\tmp
file 指定工作目录,为绝对路径
2.environment的标签为<env>
其属性名为:file,key,path,value
具体操作我举了个小例子:
2.1首先书写bat文件 如下:
@echo off
java -version
2.2然后如下创建build文件
<?xml version="1.0" encoding="UTF-8" > <project name="environmentTest" default="test" basedir="." > <property environment="env" /> <property name="tomcat.home" value="/Apache Software Foundation/Tomcat 5.5" /> <target name="test" depends="Check"> <echo message="Test java -version!" /> <exec executable="version.bat"> <env key="TOMCAT_HOME" value="${tomcat.home}" /> </exec> </target> <target name="Check" unless="env.ANT_HOME" > <fail message="ANT_HOME must be set!" /> </target> </project>
结果:
Buildfile: E:\JavaPortlet\AntDemo4\build.xml
Check:
demo:
[echo] Test java -version!
[exec] java version "1.6.0_19"
[exec] Java(TM) SE Runtime Environment (build 1.6.0_19-b04)
[exec] Java HotSpot(TM) Client VM (build 16.2-b04, mixed mode, sharing)
BUILD SUCCESSFUL
Total time: 1 second
很简单的例子。。。。。
如果你没有配置ANTHOME的话,失败信息就是程序写的了
3.filelist 标签为<filelist>
主要是和dependset连用的
具体的是关联的,主要是更新操作如下:
<filelist dir="." id="xx" files="src.text.txt" />
<dependset >
<srcfilesetlist refid="xx" />
<targetfilelist dir="." files="**.xml" />
</dependset>
4.fileset 标签是<fileset>
我们经常用的,前几篇文章也写过。fileset主要是喝patternset一起用很爽的 。。。。如果想知道请给我留言 。
这里就不多说了,具体的请看我给的例子:
5.filterset 标签<filterset>
下面我给一个很具体的例子:
<target name="replace" > <tstamp> <format property="now" pattern="yyyy-MM-dd hh:mm:ss" /> </tstamp> <mkdir dir="${src.replace}" /> <copy todir="${src.replace}" filtering="true" > <fileset dir="${src.com}" > <include name="**/Test.java" /> </fileset> <!-- search for %date!and %copyright! --> <filterset begintoken="%" endtoken="!" > <filter token="date" value="${now}" /> <filter token="copyright" value="Copyright (C) 2010 chenhailong" /> </filterset> <filterset begintoken=" " endtoken=";" > <filter token="com" value=" replace;" /> </filterset> </copy> </target>
说明:其中有一些变量,请自己加上后运行。。。。如果有什么不懂的,请留言。。
package com; /** * %date! * %copyright! * @author chenhailong * */ public class Test { public static void main(String args[]){ for(int i=0;i<args.length;i++){ System.out.println(args[i]); } } }
package replace; /** * 2010-12-05 11:16:00 * Copyright (C) 2010 chenhailong * @author chenhailong * */ public class Test { public static void main(String args[]){ for(int i=0;i<args.length;i++){ System.out.println(args[i]); } } }
Buildfile: E:\JavaPortlet\AntDemo4\build.xml
replace:
BUILD SUCCESSFUL
Total time: 1 second
实际就是filter过滤到不想要的 在进行转变
6.path标签是<path>
主要是加环境的和jar包之用。和classpath有异曲同工之效。。。
<path> <pathelement path="${lib.jar}" /> </path> <classpath> <pathelement path="${lib.jar}" /> </classpath>
7.mapping标签是<mapping>
mapping 用的很少 主要是和copy连用 具体的也是和copy相关。。
我给出个小例子:
<target name="backup" > <mkdir dir="${backup}" /> <mkdir dir="${backup1}" /> <copy todir="${backup}"> <fileset dir="${src.com}" includes="**/*.java"></fileset> <mapper type="glob" from="*.java" to="*.java.bat" /> </copy> <copy todir="${backup1}" > <fileset dir="${src.com}" includes="**/*.java" /> <!-- The copy have a default of the identity --> </copy> </target> <target name="copy" depends="backup"> <copy todir="${backup1}" > <fileset dir="${backup}" includes="**/*.*" /> <mapper type="flatten"></mapper> </copy> </target>
好了 到这就是把DataType的所有标签介绍完毕。。希望大家给我留言。。。要不真的没动力啊 哈哈。。
如果有什么问题的话也请给我留言 。。我会很快给你们答复。。
ant的开发到现在还不是很难,如果你想更细的了解的话 ,那就跟我到ant4中看看有什么可了解的 哈哈哈。。。。。。
(待续)。。。。。。。。。。。。。。