zoukankan      html  css  js  c++  java
  • 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"?>

  • 相关阅读:
    activemq 异步和同步接收
    简单的activemq的封装和使用
    activemq 一个不错的ppt
    activemq 的小实验
    activemq api的封装
    观察者设计模式例子
    【转载】自定义类加载器例子
    京东拍拍网 笔试 搞java的去考C++ 苦逼
    java中用equals比较两个内容相同的字符数组
    云端飘 String s=new String("abc")创建了几个对象?
  • 原文地址:https://www.cnblogs.com/zhangwenjing/p/2913530.html
Copyright © 2011-2022 走看看