Ant学习入门
来源:互联网 发布:西门子人机界面软件 编辑:程序博客网 时间:2024/06/11 06:00
ANT 学习
入门
1. 属性
<property name=”metal”value=”beryllium”/>
为了在其他地方引用它,可以使用如下语法:${metal}
ANT中定义了许多预定义属性。首先,在JAVA环境设置用于运行ANT的所有系统属性,均可作为ANT属性使用,比如${user.home}、${user.name}等,还有ANT自己的属性,包括${ant.version}等。以及${basedir},这个属性是项目目录的绝对路径(由包含生成文件的目录定义,或者有project元素的可选basedir属性定义)。
对于文件系统的引用如下:
<property name=”database-file” location=”archive/database/test.db”/>
2. 定义依赖关系
在target中使用depends属性指定依赖的另外一个target。
ANT基础知识
1.编译源代码
<javacsrcdir=”src” />
这个标签寻找SRC目录中以.java为扩展名的所有文件,并对它们调用javac编译器,从而在相同的目录中生成类文件。而下面语句:
<javacsrcdir=”src” destdir=”build” />或
<javacsrcdir=”${src.dir}” destdir=”${build.dir}” />
则将src目录中的.java文件编译到build目录中。其中,destdir指定生成目录。没有的话就创建。其他属性包括:
Classpath:等价于 javac 的 -classpath 选项。
Debug=”true”:指示编译器应该带调试信息编译源文件。
javac 任务的一个重要特点在于,它仅编译那些它认为需要编译的源文件。如果某个类文件已经存在,并且对应的源文件自从该类文件生成以来还没有改变过,那么该源文件就不会被重新编译。javac任务的输出显示了实际被编译的源文件的数目。
2.编译器选择
ANT的javac任务默认行为是调用运行ANT本身的任何JVM的标准编译器。Javac的 fork属性设置为true,可以帮助你选择一个特定的编译器,如下:
<javac srcdir=”src” fork=”true” executeable=”d:\sdk141\bin\javac”memoryMaximumSize=”128m”>
其中memoryMaximumSize属性设置一个最大内存值。
3.创建JAR文件
<jar destfile=”package.jar” basedir=”classes” />
将classes目录中所有文件(包括非.class文件)添加到package.jar中。此处没有指定清单文件,因此ANT将提供一个基本的清单文件。
Manifest属性允许指定一个用作该JAR文件的清单文件。如下:
<jar destfile=”package.jar” basedir=”classes”>
<manifest>
<attribute name=”Built-By”value=”${user.name}” />
<attribute name=”Main-class”value=”package.Main” />
</manifest>
</jar>
及在JAR包中的META-INF目录下的MANIFEST.MF文件中添加清单内容。
4.时间戳生成
<tstamp/>标签生成时间戳
DSTAMP
设置为当前时间,格式为YYYYMMDD
20031217
TSTAMP
设置为当前日期,格式为HHMM
1603
TODY
设置为当前日期,带完整的月份
2003年12月17日
<target name="jar"depends="compile">
<tstamp/>
<jardestfile="build-${TODAY}.jar"basedir="build"/>
</target>
文件系统操作
1. 创建和删除目录
创建:</midir dir=”archive/metals/zinc” />
ANT中,使用”/”作为目录分割符。
删除:<delete dir=”archive/metals/zinc” />
这将删除指定的目录连同它所包含的所有文件已经子目录。如果使用file属性而不是dir属性可以指定要删除的单个文件。
2. 复杂和移动文件及目录
拷贝:<copy file=”src/Test.java” tofile=”src/TestCopy.java” />
使用todir属性,可以指定拷贝到另一个目录
<copy file=”src/Test.java” todir=”archive” />
使用<fileset>可以同时拷贝多个文件:
<copytodir="${backup.dir}">
<filesetdir="${build.dir}"/>
</copy>
移动:<move file=”src/Test.java” tofile=”src/TestCopy.java” />
相当于重命名操作。同样,使用todir属性可以移动到不用目录。
3. 创建和解压缩ZIP及TAR文件
创建
ZIP文件:<zipdestfile=”output.zip” basedir=”output” />
TAR文件:<gzipdestfile=”output.zip” basedir=”output” />
还可以使用GZIP和BZIP任务来压缩文件。如下:
<gzip src=”output.tar” zipfile=”output.tar.gz”/>
解压
<unzip src=”output.tar.gz” dest=”extractDir” />
4. 替换文件中的标记
Replace任务,它执行文件中的查找和替换操作。Token属性指定要查找的字符串,value属性指定一个新的字符串,查找到的标记字符串的所有实例都被替换为这个新的字符串。如下:
<replace file=”input.txt” token=”old” value=”new ”/>
如果加上summary=”true”属性,这将导致该任务输出找到和替换的标记字符串实例的数目。
其他
1. 模式匹配
*:它匹配零个或多个字符
?:它仅匹配一个字符
如下操作:
<copytodir="build">
<fileset dir="src">
<include name=”*.java” />
</fileset>
</copy>
同样的,也可指定exclude元素,用于排除一些文件。
2. 使用选择器
Size
根据文件的字节大小来选择文件。When属性用来设置比较的性质(less,more,equal),value属性定义每个文件将与之作比较的目标大小。
Contains
只有包含给定文本字符串(有text属性指定)的文件才匹配这个选择器。默认情况下,查找操作是大小写敏感的,添加casesensitive=”no”可以改变默认值
Filename
Name属性指定文件名要与之匹配的模式。本质上与include元素相同,以及与指定了negate=”yes”时的exclude元素相同。
present
从当前目录结构中选择如下文件:它们与指定的targetdir目录中的文件具有相同的名称和相同的目录结构。
Depend
与present选择器具有相同的效果,只不过匹配的文件被限制到相对于targetdir位置中的对应文件来说,最近已修改过的那些文件。
Date
基于其最后修改日期选择文件。When属性指定作为比较的性质是before、after还是equal,datetime属性指定与之比较的日期和时间。具有的给定格式mm/dd/yyyy hh:mm am_or_pm。Windows平台上有一个内置的2秒偏移,以允许底层文件系统的不精确性——这可能导致匹配的文件数量超过预期。可通过granularity属性来更改(单位:毫秒)
Depth
这个选择器检查每个文件的目录结构层次数目。Min和/或max属性用于选择具有想要的目录层次数目的文件。
还可以通过一个选择器容器内嵌一个或多个选择器来组合选择器。最常用的选择器容器and仅选择它包含的所有选择器都选择了的文件。其他选择器容器包括or、not、none、majority
如下:
<fileset dir=”dir>
<and>
<containstext=”hello” />
<size value=”512”when=”more” />
</and>
</fileset>
3. 将生成文件链接起来
使用ANT任务从一个ANT生成中调用另一个ANT生成很容易。可以使用antfile属性,仅指定那些要使用的生成文件,ant将生成该生成文件的默认目标。如下:
<ant antfile=”sub-build.xml” />
在父生成文件中定义的任何属性默认将传递给子生成文件,可以通过指定inheritAll=”false”来避免。通过使用property元素来传入显式的属性也是可以做到的——即使将inheritAll设置为false,这些属性也仍然适用于子生成文件。这个功能和适合用于给子生成文件传入参数。如下:
下面是我们想调用的一个生成文件:
<?xml version=”1.0”?>
<project default=”showMessage”>
<target name=”showMessage”>
<echo message=”Message=${message}” /> //echo简单的输出给定的消息
</target>
</project>
下面调用第一个文件的第二个文件,它还给第一个文件传入message属性:
<project default=”callSub”>
<target name=”callSub”>
<antantfile=”sub.xml” target=”showMessage” inheritAll=”false”>
<property name=”message” value=”Hello fromparent build” />
</ant>
</target>
</project>
- Ant学习笔记(Ant入门)
- Ant入门学习
- ANT入门学习笔记
- Ant学习入门
- ant入门学习
- Ant入门学习
- Ant学习笔记--入门
- ant入门学习
- Ant入门学习资料
- Ant学习笔记(一)-Ant入门
- 最近在学习ant入门
- Ant学习--简单实例入门
- ant 学习笔记之入门一
- ant入门基础教程(转载方便学习)
- [JAVA学习笔记-83]Ant简单入门
- ant 入门
- Ant入门
- Ant入门
- IE6下采用jquery的$("#form").submit()方法提交表单失效
- Unix操作系统基础:Unix 进程
- 自定义Comparator比较String字符串
- 我竟然被骗了,原来我也是个好人
- 电话号码归属地
- Ant学习入门
- 再谈yahoo网站性能优化的建议
- init/loadView/viewDidLoad/viewDidUnload
- 2007年化学材料类期刊影响因子
- 将 Win32 程序移植到 Linux
- HTTP Server开发相关学习资料整理推介
- WCF 4 Step By Step Chapter 3 Note (Fault Handling)
- 茶与器
- Oracle Client Linux平台安装