Ant工具(二)

一、命令行选项总结:

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"?>

原文地址:https://www.cnblogs.com/zhangwenjing/p/2913530.html