浅析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文档。

<?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之后目录结构



浅析Java中Ant的使用,布布扣,bubuko.com

时间: 2024-10-06 23:51:01

浅析Java中Ant的使用的相关文章

浅析Java中的final关键字(转)

浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/p/3736238.html 一

浅析Java中的访问权限控制

浅析Java中的访问权限控制 今天我们来一起了解一下Java语言中的访问权限控制.在讨论访问权限控制之前,先来讨论一下为何需要访问权限控制.考虑两个场景: 场景1:工程师A编写了一个类ClassA,但是工程师A并不希望ClassA被该应用中其他所用的类都访问到,那么该如何处理? 场景2:如果工程师A编写了一个类ClassA,其中有两个方法fun1.fun2,工程师只想让fun1对外可见,也就是说,如果别的工程师来调用ClassA,只可以调用方法fun1,那么该怎么处理? 此时,访问权限控制便可以

【转】浅析Java中的final关键字

谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字的基本用法. 1.修饰类 当用final修饰一个类时,表明这个类不能被继承.也就是说,如果一个类你永远不会让它被继承,就可以用final进行

浅析java中clone()方法

本文转载自:http://blog.csdn.net/mengxiangyue/article/details/6818611 Java中我们可能都遇到过这样的情况,在我们将一个对象做为参数传给一个函数的时候,我们希望在这个函数中所做的操做,并不会影响到这个对象本身.但是在java传递都是引用,所以往往我们在函数内部改变了对象的某一个值,在函数外面调用该对象的时候,相应的值也同样被改变了,例如下面的程序: class Test { static void myMethod(Point pt1)

浅析Java中的final关键字

原文出处: 海子 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正. 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字

转载:浅析Java中的final关键字

文章转自:http://www.cnblogs.com/dolphin0520/p/3736238.html 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cn

浅析Java中的final关键字(转载)

自http://www.cnblogs.com/dolphin0520/p/3736238.html转载 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字的基本用法. 1.修饰类 当用final修饰一个类时,表明这个类不能被继承.也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰.final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方

浅析java中的值传递与引用传递

public class Test { public static void main(String[] args) { String s = new String("aaa"); change(s); System.out.println(s); StringBuilder sb = new StringBuilder("111"); change(sb); System.out.println(sb); } static void change(String s

(基础篇)浅析JAVA中的栈和堆

若为生活所迫,做了自己不喜欢做的事.却没有达到自己预期想要的结果,那么何必强迫自己,苦恼这一世.不如转而做自己喜欢的事,哪怕像我一样从头开始. 一.概念 [老生常谈]对于刚接触计算机,没几年的我来说,好多老生常谈的概念对我而言都很新鲜.下面的概念也不例外.他们说对学计算机的而言,堆栈是一个不容忽视的概念. 1.堆栈是两种数据结构,只能在一端对数据项进行插入和删除. 2.在单片机应用中,堆栈是个特殊的存储区,主要是暂时存放数据和地址. 3.堆,队列优先,先进先出 4.栈,先进后出 [java中堆栈