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的使用的更多相关文章

  1. 浅析Java中的final关键字

    浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

  2. 浅析Java中的访问权限控制

    浅析Java中的访问权限控制 今天我们来一起了解一下Java语言中的访问权限控制.在讨论访问权限控制之前,先来讨论一下为何需要访问权限控制.考虑两个场景: 场景1:工程师A编写了一个类ClassA,但 ...

  3. [转载]浅析Java中的final关键字

    浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

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

    谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. ...

  5. 浅析Java中的深拷贝和浅拷

      浅析Java中的深拷贝和浅拷贝 原文链接: http://blog.csdn.net/tounaobun/article/details/8491392 假如说你想复制一个简单变量.很简单: in ...

  6. 浅析Java中的native关键字

    浅析Java中的native关键字 native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中.Java语言本身不能对操作系统底层进 ...

  7. 浅析 Java 中的继承和重写

    浅析 Java 中的继承和重写 Java 中的构造方法不能被继承. Java 中 static 修饰的方法可以被继承,但不能被子类重写. Java 中 final 修饰方法不允许被子类重写,但是可以被 ...

  8. 通过源码浅析Java中的资源加载

    前提 最近在做一个基础组件项目刚好需要用到JDK中的资源加载,这里说到的资源包括类文件和其他静态资源,刚好需要重新补充一下类加载器和资源加载的相关知识,整理成一篇文章. 理解类的工作原理 这一节主要分 ...

  9. 浅析java中clone()方法

    本文转载自:http://blog.csdn.net/mengxiangyue/article/details/6818611 Java中我们可能都遇到过这样的情况,在我们将一个对象做为参数传给一个函 ...

随机推荐

  1. 几种常见的app推广形式

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  2. Python数据分析:pandas玩转Excel (一)

    目录 1 pandas简介 2 导入 3 使用 4 读取.写入 1 pandas简介 1.Pandas是什么? Pandas是一个强大的分析结构化数据的工具集: 它的使用基础是Numpy(提供高性能的 ...

  3. 手把手教你学numpy,从此数据处理不再慌【三】

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是numpy专题的第三篇,我们来聊聊numpy当中的索引. 上篇的末尾其实我们简单地提到了索引,但是没有过多深入.没有过多深入的原因也很 ...

  4. PIX防火墙配置A/S故障切换

    PIX防火墙配置A/S故障切换 1.基本命令 failover show failover failover lan enable failover lan interface zwish e2 fa ...

  5. day 6 (笔记由图转)

    .

  6. Spring boot Sample 009之spring-boot-web-thymeleaf

    一.环境 1.1.Idea 2020.1 1.2.JDK 1.8 二.目的 spring boot 整合thymeleaf模板开发web项目 三.步骤 3.1.点击File -> New Pro ...

  7. MVVM 小雏形 knockout

    前言 knockout学过的当工具脚本用,就像jquery一样使用,学习成本15分钟,没学过的可学可不学. knockout 是上古神器,话说在远古开天辟地,前端到处是飞禽走兽,一片混乱. 这时候人类 ...

  8. Chisel3 - Tutorial - Parity

    https://mp.weixin.qq.com/s/OtiQnE52PwdCpvmzJ6VFnA   奇偶发生器.统计输入中1的个数,如果为偶数则输出0,奇数则输出1.   参考链接: https: ...

  9. JavaSE(一) 语言概述

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 目录 1 基础常识 2 Java语言版本迭代概述 3 Java语言应用的领域 4 Java语言的特点 5 ...

  10. Vue中将网址、动态网址转为二维码

    1. 首先需要安装相关的依赖包 npm install qrcodejs2 --save 或者 npm install qrcode2 --save 这里选择第二种方式进行安装,如图: 2.templ ...