浅析Java中Ant的使用

本文详细介绍了Ant作为Java项目的构建工具的使用,包括Project、Property、Target、Mkdir、Delete、Copy、Move、Fileset、Javac、Javadoc和Jar等关键元素及其属性。通过实例展示了如何配置和执行Ant脚本来编译源代码、创建jar包,并给出了项目结构和build后的目录结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



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

Ant中常用的节点元素

Project

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

Project主要属性包括:

Nameproject节点名称

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文件集合,配合includeexclude使用。

  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>

项目结构:

build之前项目结构

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

build之后目录结构



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值