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文档。
- <?xml version="1.0" encoding="utf-8"?>
- <project name="AntProject" basedir="." default="zip">
- <!-- 定义时间戳 -->
- <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>
- </project>
项目结构:
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之后目录结构