第一个Ant脚本

目的:

  • 编写类文件
  • 编译源文件,将生成的class文件放在指定的位置
  • 将它打成jar,并放在指定的位置
  • 运行这个jar

编写源文件

Test.java:

package com.ant.test;

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Test {
	public String getTime() {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd HH:MM:ss");
		Calendar c = Calendar.getInstance();
		return format.format(c.getTime());
	}
}


这个类有一个方法,该方法返回当前系统的日期和时间。

 

 

测试类,

HelloWorldAnt.java:

package com.ant.test;

public class HelloWorldAnt {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println("Hello World Ant.");
		String time = new Test().getTime();
		System.out.println("Time is :" + time);
	}

}
在project目录下新建build.xml文件,文件内容:
<?xml version="1.0" encoding="utf-8"?>
<project name="HelloWorldAnt" default="run" basedir=".">
	<property name="src.dir" value="src"></property>
	<property name="dest.dir" value="dest"></property>
	<property name="classes.dir" value="${dest.dir}/classes"></property>
	<property name="jarfile" value="${dest.dir}/helloworldAnt.jar"></property>

	<target name="init">
		<mkdir dir="${classes.dir}"></mkdir>
		<echo message="Create dir ${dest.dir}."></echo>
	</target>

	<target name="compile" depends="init">
		<javac srcdir="${src.dir}" destdir="${classes.dir}"></javac>
		<echo>Compile source code.</echo>
	</target>

	<target name="jar" depends="compile">
		<jar jarfile="${jarfile}" basedir="${classes.dir}"  includes="**/*.class"></jar>
		<echo>Create jar file.</echo>
	</target>

	<target name="run" depends="jar">
		<java classpath="${jarfile}" classname="com.ant.test.HelloWorldAnt"></java>
		<echo>Run jar file.</echo>
	</target>

	<target name="clean">
		<delete dir="${dest.dir}"></delete>
		<delete file="${jarfile}"></delete>
	</target>

</project>

 

Ok,接下来就是执行Ant任务,完成我们的目标。

 

将build.xml拖放到Ant视图。

 

然后执行run[default],控制台得到如下输出:

Buildfile: D:\qincidong\workspace\ant\build.xml
init:
    [mkdir] Created dir: D:\qincidong\workspace\ant\dest\classes
     [echo] Create dir dest.
compile:
    [javac] Compiling 2 source files to D:\qincidong\workspace\ant\dest\classes
     [echo] Compile source code.
jar:
      [jar] Building jar: D:\qincidong\workspace\ant\dest\helloworldAnt.jar
     [echo] Create jar file.
run:
     [java] Hello World Ant.
     [java] Time is :2013-30-21 11:06:16
     [echo] Run jar file.
BUILD SUCCESSFUL
Total time: 1 second


 

上面的
[java] Hello World Ant. 
[java] Time is :2013-30-21 11:06:16
就是程序运行后的结果。
 
OK,下面对上面的配置文件做一些解释。
project元素:
<project>是Ant脚本的根元素,Ant的所有内容都放在这对标签之间。
name是你给它取的名字,一般与工程名相同。
default:默认要执行的任务[Target],如上面的你不指定任务名称时,默认执行run这个Target.
这是在命令行执行的结果,没有指定执行的任务名称,从执行结果我们知道,执行的是run这个Target。
basedir:工作根目录,.表示当前目录。
 
property元素:
<property>:就像程序中的变量一样,通过name和value属性指定,在其他地方用${变量名}引用。
 
target元素:
<target>:我们要做的每一件事情都可以写成一个Target,例如上面init,compile,jar,run,clean总共5个任务。
name:任务的名称
depends:依赖的任务,如上面的compile任务依赖init,即先执行init,再执行compile。
 
init target:
<target name="init">
  <mkdir dir="${classes.dir}"></mkdir>
  <echo message="Create dir ${dest.dir}."></echo>
 </target>
这个任务就是创建一个文件夹,文件夹的名字是${classes.dir}代笔的文件夹,即projectName/dest/classes。
mkdir标签用于创建一个文件夹,dir指定要创建的文件夹。
echo:输出一些信息。
 
compile target:
<target name="compile" depends="init">
  <javac srcdir="${src.dir}" destdir="${classes.dir}"></javac>
  <echo>Compile source code.</echo>
 </target>
这个任务就是编译java源文件,它依赖init任务,即创建好编译生成的.class文件的位置后,编译源文件。
使用javac命令编译,srcdir指定源文件的位置,destdir指定生成的class文件的位置。
 
jar target:
<target name="jar" depends="compile">
  <jar jarfile="${jarfile}" basedir="${classes.dir}"  includes="**/*.class"></jar>
  <echo>Create jar file.</echo>
 </target>
在编译生成.class文件后,使用jar命令打包成jar文件。
jarfile:指定生成的jar文件
basedir:指定class文件的位置
includes:指定打包到jar的文件。
**/*.class:所有目录下的.class文件。
 
run target:
<target name="run" depends="jar">
  <java classpath="${jarfile}" classname="com.ant.test.HelloWorldAnt"></java>
  <echo>Run jar file.</echo>
 </target>
在打包成jar文件后,使用java命令执行这个jar文件。
classpath:指定jar的位置
classname:指定主程序。
 
clean target:
<target name="clean">
  <delete dir="${dest.dir}"></delete>
  <delete file="${jarfile}"></delete>
 </target>
删除${dest.dir}指定的文件夹和${jarfile}指定的文件。
实际上<delete file="${jarfile}"></delete>这句不必要,因为生成的jar文件就在${dest.dir}文件夹中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值