浅析Java中Ant的使用
阅读原文时间:2023年07月10日阅读:1

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文件中内容

常用属性:

用于指定jar包的主方法

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


<!-- 定义时间戳 -->  
<tstamp></tstamp>

<property name="classes" location="./build/classes"/>  
<property name="jarpath" location="./build/jar"/>  
<property name="warpath" location="./build/war"/>  
<property name="zippath" location="./build/zip"/>  
<property name="javadoc" location="./build/javadoc"/>  
<property name="windowtitile" value="Ant Project Title"/>  
<property name="jarfile" location="${jarpath}/AntProject\_${DSTAMP}.jar"/>  
<property name="warfile" location="${warpath}/AntProject\_${DSTAMP}.war"/>  
<property name="zipfile" location="${zippath}/AntProject\_${DSTAMP}.zip"/>

<target name="init">  
    <mkdir dir="${classes}"/>  
    <mkdir dir="${jarpath}"/>  
    <mkdir dir="${warpath}"/>  
    <mkdir dir="${zippath}"/>  
    <mkdir dir="${javadoc}"/>  
</target>

<!--  
如果有额外的jar包,可以再这里指定,再下面的classpath处进行引用  
<path id="classpath">  
    <pathelement path="your jar jar file path"/>  
</path>  
-->

<!-- 编译java源文件 -->  
<target name="compile" depends="init">  
    <javac srcdir="./src" destdir="${classes}" includeantruntime="false">  
        <!--  
            <classpath refid="classpath"/>  
        -->  
    </javac>  
</target>

<!-- 生成javadoc文档 -->  
<target name="javadoc" depends="init">  
    <javadoc sourcepath="./src" destdir="${javadoc}" encoding="utf-8" charset="gb2312" windowtitle="${windowtitile}">  
        <!--  
            <classpath refid="classpath"/>  
        -->  
    </javadoc>  
</target>

<!-- 打成jar包 -->  
<target name="jar" depends="compile">  
    <jar destfile="${jarfile}" basedir="${classes}">  
        <!-- Manifest.mf内容 设置主方法,生成jar包可以直接双击运行 -->  
        <manifest>  
            <attribute name="Main-Class" value="com.ant.MainClass"/>  
        </manifest>  
    </jar>  
</target>

<!-- 打成war包     这里不是一个web工程,找不到WEB-INFO/web.xml文件,添加属性needxmlfile=false即可 -->  
<target name="war" depends="compile">  
    <war destfile="${warfile}" basedir="${classes}" needxmlfile="false"></war>  
</target>

<!-- 将整个工程打成一个zip压缩包 -->  
<target name="zip" depends="javadoc,jar,war">  
    <zip destfile="${zipfile}" basedir="."></zip>  
</target>  

项目结构:

MainClass.java内容

package com.ant;

import javax.swing.JFrame;

/**
*
* 用于测试Ant的使用
*
* @version 1.0
* @author Tony.Sun
*
*/
public class MainClass {

/\*\*  
 \* 构造函数,初始化窗口  
 \*  
 \* @see MainClass#instanceFrame()  
 \*/  
public MainClass(){  
    instanceFrame();  
}

/\*\*  
 \* 定义一个500\*400、title为“MainFrame”的窗口  
 \*/  
private void instanceFrame()  
{  
    JFrame jf = new JFrame("MainFrame");  
    jf.setSize(500, 400);  
    jf.setDefaultCloseOperation(JFrame.EXIT\_ON\_CLOSE);  
    jf.setVisible(true);  
}

/\*\*  
 \* main方法  
 \* @param args  
 \*/  
public static void main(String\[\] args) {

    new MainClass();

}  

}

使用Ant进行build,输出如下

Buildfile: C:\Users\tony.sun\workspace\AntProject\build.xml
init:
[mkdir] Created dir: C:\Users\tony.sun\workspace\AntProject\build\classes
[mkdir] Created dir: C:\Users\tony.sun\workspace\AntProject\build\jar
[mkdir] Created dir: C:\Users\tony.sun\workspace\AntProject\build\war
[mkdir] Created dir: C:\Users\tony.sun\workspace\AntProject\build\zip
[mkdir] Created dir: C:\Users\tony.sun\workspace\AntProject\build\javadoc
javadoc:
[javadoc] Generating Javadoc
[javadoc] Javadoc execution
[javadoc] Loading source files for package com.ant…
[javadoc] Constructing Javadoc information…
[javadoc] Standard Doclet version 1.7.0_25
[javadoc] Building tree for all the packages and classes…
[javadoc] Building index for all the packages and classes…
[javadoc] Building index for all classes…
compile:
[javac] Compiling 1 source file to C:\Users\tony.sun\workspace\AntProject\build\classes
jar:
[jar] Building jar: C:\Users\tony.sun\workspace\AntProject\build\jar\AntProject_20140529.jar
war:
[war] Building war: C:\Users\tony.sun\workspace\AntProject\build\war\AntProject_20140529.war
zip:
[zip] Building zip: C:\Users\tony.sun\workspace\AntProject\build\zip\AntProject_20140529.zip
BUILD SUCCESSFUL
Total time: 2 seconds

build之后目录结构