一、命令行选项总结:
ant [options] [target [target2 [target3] ...]]
Options:
-help print this message
-projecthelp print project help information
-version print the version information and exit
-quiet be extra quiet
-verbose be extra verbose
-debug print debugging information
-emacs produce logging information without adornments
-logfile file use given file for log output
-logger classname the class that is to perform logging
-listener classname add an instance of class as a project listener
-buildfile file use specified buildfile
-find file search for buildfile towards the root of the filesystem and use the first one found
-Dproperty=value set property to value
Ant 命令行参考
从命令行调用Ant 的语法如下所示:
ant [option [option...]] [target [target...]]
option := {-help
|-projecthelp
|-version
|-quiet
|-verbose
|-debug
|-emacs
|-logfile filename
|-logger classname
|-listener classname
|-buildfile filename
|-Dproperty=value
|-find filename}
语法元素说明如下:
-help
显示描述Ant 命令及其选项的帮助信息。
-projecthelp
显示包含在构建文件中的、所有用户编写的帮助文档。即为各个<target>
中description 属性的文本,以及包含在<description>元素中的任何文
本。将有description 属性的目标列为主目标(“Main target”),没有此属
性的目标则列为子目标(“Subtarget”)。
-version
要求Ant 显示其版本信息,然后退出。
-quiet
抑制并非由构建文件中的echo 任务所产生的大多数消息。
-verbose
显示构建过程中每个操作的详细消息。此选项与-debug 选项只能选其一。
-debug
显示Ant 和任务开发人员已经标志为调试消息的消息。此选项与-verbose 只
能选其一。
-emacs
对日志消息进行格式化,使它们能够很容易地由Emacs 的shell 模式(shellmode)
所解析;也就是说,打印任务事件,但并不缩排,在其之前也没有
[taskname]。
-logfile filename
将日志输出重定向到指定文件。
-logger classname
指定一个类来处理Ant 的日志记录。所指定的类必须实现了org.apache.
tools.ant.BuildLogger 接口。
-listener classname
为Ant 声明一个监听类,并增加到其监听者列表中。在Ant与IDE或其他Java
程序集成时,此选项非常有用。可以阅读第六章以了解有关监听者的更多信
息。必须将所指定的监听类编写为可以处理Ant 的构建消息接发。
-buildfile filename
指定Ant 需要处理的构建文件。默认的构建文件为build.xml。
-Dproperty=value
在命令行上定义一个特性名-值对。
-find filename
指定Ant 应当处理的构建文件。与-buildfile 选项不同,如果所指定文件在当
前目录中未找到,-find 就要求Ant 在其父目录中再进行搜索。这种搜索会继
续在其祖先目录中进行,直至达到文件系统的根为止,在此如果文件还未找
到,则构建失败。
二、构建文件模板
构建文件注意项:
1、所有的构建文件都要有<project>元素,并且至少有一个<target>元素。
2、每个构建文件只能有一个<project>标签元素。
3、对于<project>元素的default属性并没有默认值。
4、构建文件并不一定要命名为build.xml,不过build.xml是Ant要搜索的默认文件名。
例子:
1、构建模板示例一(简单示例)
在F:\MyProjects\AntTest\src\test\ant路径下创建一个类,类名为HelloWorld.java
1 package test.ant; 2 3 public class HelloWorld { 4 public static void main(String[] args){ 5 System.out.println("Hello World"); 6 } 7 }
在F:\MyProjects\AntTest目录下创建一个构建文件,构建文件名为mybuild.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project name="HelloWorld" default="run" basedir="."> 3 4 <property name="src" value="src"/> 5 <property name="dest" value="classes"/> 6 <property name="hello_jar" value="hello1.jar"/> 7 8 <target name="init" > 9 <mkdir dir="${dest}"/> 10 </target> 11 12 <target name="compile" depends="init"> 13 <javac srcdir="${src}" destdir="${dest}" includeantruntime="on" /> 14 </target> 15 16 <target name="build" depends="compile"> 17 <jar destfile="${hello_jar}" basedir="${dest}" /> 18 </target> 19 20 <target name="run" depends="build"> 21 <java classname="test.ant.HelloWorld" classpath="${dest}"/> 22 </target> 23 24 <target name="clean"> 25 <delete dir="${dest}"/> 26 <delete file="${hello_jar}"/> 27 </target> 28 29 <target name="rerun" depends="clean,run"> 30 <ant target="clean" /> 31 <ant target="run" /> 32 </target> 33 34 </project>
进入cmd执行ant
如果想执行mybuild中的clean和rerun指定,可以通过下面的命令
调用clean:
ant -buildfile mybuild.xml clean
调用rerun:
ant -buildfile mybuild.xml rerun
2、构建模板示例二(打包war项目部署到tomcat示例)
在项目空间目录下创建一个名为build.properties的文件
1 #项目名称 2 name=UCCenter2 3 4 #tomcat位置 5 tomcat.home=D:\apache-tomcat-6.0.36
在项目空间目录下创建一个名为build.xml的文件
1 <?xml version="1.0" encoding="gbk"?> 2 <project basedir="." default="publish" name="package project"> 3 4 <target name="init"> 5 <echo message="设置初始化打war包需要的路径变量..."/> 6 <!-- <property name="name" value="UCCenter2"/>--> 7 <property file="build.properties" /> 8 <property name="root" value="."/> 9 10 <property name="src" value="${root}/${name}/src"/> 11 <property name="lib" value="${root}/${name}/WebRoot/WEB-INF/lib"/> 12 <property name="webapp" value="${root}/${name}/WebRoot"/> 13 14 <property name="build.dest" value="${root}/AntBuild/${name}"/> 15 <property name="build.src" value="${root}/AntBuild/${name}/src"/><!--存放用于打包的源文件--> 16 <property name="build.lib" value="${root}/AntBuild/${name}/WEB-INF/lib"/> 17 <property name="build.classes" value="${root}/AntBuild/${name}/WEB-INF/classes"/> 18 <property name="build.javadocs" value="${root}/AntBuild/doc"/> 19 <property name="jar.dest" value="${root}/AntBuild/jar"/> 20 <property name="war.dest" value="${root}/AntBuild/war"/> 21 22 <!--<property name="tomcat.home" value="D:\apache-tomcat-6.0.36"/> --> 23 24 <!--编译java源文件所需的jar文件 --> 25 <path id="classpath"> 26 <fileset dir="${lib}"> 27 <include name="**/*.jar"/> 28 </fileset> 29 </path> 30 </target> 31 32 <target name="prepare" depends="init"> 33 <echo message="创建打包需要的路径,拷贝源文件到打包路径下..."/> 34 <mkdir dir="${build.dest}"/> 35 <mkdir dir="${build.src}"/> 36 <mkdir dir="${build.lib}"/> 37 <mkdir dir="${build.classes}"/> 38 <mkdir dir="${build.javadocs}"/> 39 <mkdir dir="${jar.dest}"/> 40 <mkdir dir="${war.dest}"/> 41 <copy todir="${build.src}"> 42 <fileset dir="${src}"/> 43 </copy> 44 <copy todir="${build.dest}"> 45 <fileset dir="${webapp}"/> 46 </copy> 47 </target> 48 49 <target name="compile" depends="prepare"> 50 <echo message="编译java文件,拷贝properties属性配置文件到编译后的路径下"/> 51 <javac srcdir="${build.src}" destdir="${build.classes}"> 52 <classpath refid="classpath"/> 53 </javac> 54 <copy todir="${build.classes}"> 55 <fileset dir="${build.src}"> 56 <include name="**/*.properties"/> 57 </fileset> 58 </copy> 59 </target> 60 61 <target name="antjar" depends="compile"> 62 <echo message="开始进行打jar包..."/> 63 <jar destfile="${jar.dest}/${name}.jar" basedir="${build.classes}" /> 64 </target> 65 66 <target name="antwar" depends="antjar"> 67 <echo message="开始进行打war包..."/> 68 <delete dir="${build.src}"/> 69 <war warfile="${war.dest}/${name}.war" webxml="${build.dest}/WEB-INF/web.xml"> 70 <!--<lib dir="${buildwar.lib}"/> --> 71 <classes dir="${build.classes}"/> 72 <fileset dir="${build.dest}"/> 73 </war> 74 </target> 75 76 <target name="publish" depends="antwar,clean"> 77 <echo message="发布war包至tomcat目录下..."/> 78 <copy todir="${tomcat.home}/webapps"> 79 <fileset dir="${war.dest}"> 80 <include name="**/*.war"/> 81 </fileset> 82 </copy> 83 </target> 84 85 <target name="clean" depends="init"> 86 <echo message="清除打包用临时文件..."/> 87 <delete dir="${build.src}"/> 88 <delete> 89 <fileset dir="${build.classes}" includes="**/*.classes"/> 90 </delete> 91 <delete dir="${build.dest}"/> 92 </target> 93 94 </project>
进入cmd执行ant
打包自己的项目时只需修改build.properties的属性值即可。
注意事项:
错误1:
异常解释:xml文件不能被解析,一般出现这样的问题在于xml格式上,并且问题多出现在xml文件的头部。
原因:一般多是因为xml文件头部有了空格或回车导致的
总结:<?xml version="1.0" encoding="UTF-8"?>前面不要有任何其他字符,如空格、回车、换行这些否则就会出现上面的异常
错误2:
异常解释:读取XML文件时候出现的编码问题。
原因:xml文件中声明的编码与xml文件本身保存时的编码不一致。
总结:1、在有汉字的配置文件中,将汉字改为英文。2、在有汉字的配置文件中,加入如下代码:<?xml version="1.0" encoding="gbk"?>