浅析Java中Ant的使用

Ant是一种基于Java的打包工具,Ant脚本采用XML格式编写,默认的文件名为build.xml。

Ant中常用的节点元素

Project

Project是项目工程的顶级节点,一个build.xml文件可以包含多个project元素节点。

Project主要属性包括:

Name:project节点名称

Default:默认执行的target元素节点名称

Basedir:项目根节点,一般为“.”。

Property

  Property用于定义公共常量,包含于project元素内部,以键值对形式出现。

Property主要属性包括:

  Name:常量名称

  Value:常量值

  Location:作用同Value,用于定义文件路径值,可以统一处理不同系统间路径符不一致问题。

  取值方法:${name}

Target

  Target用于定义任务,包含于project元素内部,与property同级。同一个project下可包含多个target节点。

  Target主要属性:

  Name:节点名称

  Depends:可选,指定target的依赖关系。

Mkdir

  Mkdir用于创建路径

  Mkdir主要属性

  Dir:将要被创建的路径

Delete用于删除路径,属性同上。

Copy

  Copy用于复制文件

  Copy主要属性:

  File:源文件

  Todir:复制的目标路径

  Tofile:复制的目标文件

  子节点:FileSet

Move用于移动文件,主要属性同上。

Fileset

  Fileset文件集合,配合include和exclude使用。

  Fileset主要属性:

  Dir:指定源文件路径

  

Include:用于描述fileset包含哪些文件

Exclude:用于描述fileset不包含哪些文件

Javac

  Javac用于编译Java源文件。

  Javac主要属性:

  Srcdir:标明源文件位置

  Destdir:编译后文件存放位置

  Encoding:指定编码格式

  Classpath:指定lib位置

  Debug:是否输出调试信息

Javadoc

  

Jar

  Jar用于将指定文件或文件夹下内容进行打包

  Jar主要属性

  Jarfile:指定生产jar文件路径及名称

  Basedir:指定源文件位置

  Jar的子节点manifest

  Manifest用于指定最后生成jar包中manifest.mf文件中内容

  常用属性:

  <property name=”Main-Class”value=“xxxx.xxx.xxx.Xxxx”/>

  用于指定jar包的主方法

下面提供一个简单,但基本功能较全的build.xml文档。

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <project name="AntProject" basedir="." default="zip">  
  3.   
  4.     <!-- 定义时间戳 -->  
  5.     <tstamp></tstamp>  
  6.       
  7.     <property name="classes" location="./build/classes"/>  
  8.     <property name="jarpath" location="./build/jar"/>  
  9.     <property name="warpath" location="./build/war"/>  
  10.     <property name="zippath" location="./build/zip"/>  
  11.     <property name="javadoc" location="./build/javadoc"/>  
  12.     <property name="windowtitile" value="Ant Project Title"/>  
  13.     <property name="jarfile" location="${jarpath}/AntProject_${DSTAMP}.jar"/>  
  14.     <property name="warfile" location="${warpath}/AntProject_${DSTAMP}.war"/>  
  15.     <property name="zipfile" location="${zippath}/AntProject_${DSTAMP}.zip"/>  
  16.   
  17.     <target name="init">  
  18.         <mkdir dir="${classes}"/>  
  19.         <mkdir dir="${jarpath}"/>  
  20.         <mkdir dir="${warpath}"/>  
  21.         <mkdir dir="${zippath}"/>  
  22.         <mkdir dir="${javadoc}"/>  
  23.     </target>  
  24.       
  25.     <!--  
  26.     如果有额外的jar包,可以再这里指定,再下面的classpath处进行引用  
  27.     <path id="classpath">  
  28.         <pathelement path="your jar jar file path"/>  
  29.     </path>  
  30.     -->  
  31.       
  32.     <!-- 编译java源文件 -->  
  33.     <target name="compile" depends="init">  
  34.         <javac srcdir="./src" destdir="${classes}" includeantruntime="false">  
  35.             <!-- 
  36.                 <classpath refid="classpath"/> 
  37.             -->  
  38.         </javac>  
  39.     </target>  
  40.       
  41.     <!-- 生成javadoc文档 -->  
  42.     <target name="javadoc" depends="init">  
  43.         <javadoc sourcepath="./src" destdir="${javadoc}" encoding="utf-8" charset="gb2312" windowtitle="${windowtitile}">  
  44.             <!-- 
  45.                 <classpath refid="classpath"/> 
  46.             -->  
  47.         </javadoc>  
  48.     </target>  
  49.       
  50.     <!-- 打成jar包 -->  
  51.     <target name="jar" depends="compile">  
  52.         <jar destfile="${jarfile}" basedir="${classes}">  
  53.             <!-- Manifest.mf内容 设置主方法,生成jar包可以直接双击运行 -->  
  54.             <manifest>  
  55.                 <attribute name="Main-Class" value="com.ant.MainClass"/>  
  56.             </manifest>  
  57.         </jar>  
  58.     </target>  
  59.       
  60.     <!-- 打成war包     这里不是一个web工程,找不到WEB-INFO/web.xml文件,添加属性needxmlfile=false即可 -->  
  61.     <target name="war" depends="compile">  
  62.         <war destfile="${warfile}" basedir="${classes}" needxmlfile="false"></war>  
  63.     </target>  
  64.       
  65.     <!-- 将整个工程打成一个zip压缩包 -->  
  66.     <target name="zip" depends="javadoc,jar,war">  
  67.         <zip destfile="${zipfile}" basedir="."></zip>  
  68.     </target>  
  69. </project>  

 

 

 

 

项目结构:

build之前项目结构

MainClass.java内容

 

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. package com.ant;  
  2.   
  3. import javax.swing.JFrame;  
  4.   
  5. /** 
  6.  *  
  7.  * 用于测试Ant的使用 
  8.  *  
  9.  * @version 1.0 
  10.  * @author Tony.Sun 
  11.  *  
  12.  */  
  13. public class MainClass {  
  14.   
  15.     /** 
  16.      * 构造函数,初始化窗口 
  17.      *  
  18.      * @see MainClass#instanceFrame() 
  19.      */  
  20.     public MainClass(){  
  21.         instanceFrame();  
  22.     }  
  23.       
  24.     /** 
  25.      * 定义一个500*400、title为“MainFrame”的窗口 
  26.      */  
  27.     private void instanceFrame()  
  28.     {  
  29.         JFrame jf = new JFrame("MainFrame");  
  30.         jf.setSize(500, 400);  
  31.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  32.         jf.setVisible(true);  
  33.     }  
  34.   
  35.     /** 
  36.      * main方法 
  37.      * @param args 
  38.      */  
  39.     public static void main(String[] args) {  
  40.           
  41.         new MainClass();  
  42.           
  43.     }  
  44. }  

 

 

 

 


使用Ant进行build,输出如下

 

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. Buildfile: C:\Users\tony.sun\workspace\AntProject\build.xml  
  2. init:  
  3.     [mkdir] Created dir: C:\Users\tony.sun\workspace\AntProject\build\classes  
  4.     [mkdir] Created dir: C:\Users\tony.sun\workspace\AntProject\build\jar  
  5.     [mkdir] Created dir: C:\Users\tony.sun\workspace\AntProject\build\war  
  6.     [mkdir] Created dir: C:\Users\tony.sun\workspace\AntProject\build\zip  
  7.     [mkdir] Created dir: C:\Users\tony.sun\workspace\AntProject\build\javadoc  
  8. javadoc:  
  9.   [javadoc] Generating Javadoc  
  10.   [javadoc] Javadoc execution  
  11.   [javadoc] Loading source files for package com.ant...  
  12.   [javadoc] Constructing Javadoc information...  
  13.   [javadoc] Standard Doclet version 1.7.0_25  
  14.   [javadoc] Building tree for all the packages and classes...  
  15.   [javadoc] Building index for all the packages and classes...  
  16.   [javadoc] Building index for all classes...  
  17. compile:  
  18.     [javac] Compiling 1 source file to C:\Users\tony.sun\workspace\AntProject\build\classes  
  19. jar:  
  20.       [jar] Building jar: C:\Users\tony.sun\workspace\AntProject\build\jar\AntProject_20140529.jar  
  21. war:  
  22.       [war] Building war: C:\Users\tony.sun\workspace\AntProject\build\war\AntProject_20140529.war  
  23. zip:  
  24.       [zip] Building zip: C:\Users\tony.sun\workspace\AntProject\build\zip\AntProject_20140529.zip  
  25. BUILD SUCCESSFUL  
  26. Total time: 2 seconds  

 

 

 

 


build之后目录结构

build之后目录结构

posted @ 2017-04-12 10:05  一叶知秋。  阅读(8405)  评论(0编辑  收藏  举报