Ant学习--简单实例入门
步骤1、创建工程文件夹名字
F:\Helloworld
步骤2、编写java代码;
package com.netease; public class Ant_test { public static void main(String []args){ System.out.println("测试ant用法!!!"); System.out.println("测试ant用法!!!"); Antbean bean = new Antbean(); bean.print(); } }
package com.netease; public class Antbean { public void print(){ System.out.println("Ant_test类调用了我,我的名字叫做Antbean"); System.out.println("Ant_test类调用了我,我的名字叫做Antbean"); System.out.println("Ant_test类调用了我,我的名字叫做Antbean"); } }
步骤3、在F:\Helloworld创建src/com/netease/目录,将编写的java类文件放在此处
步骤4、编写build.xml文件,放在和src的同级目录,即项目根目录下。
<?xml version="1.0" encoding="UTF-8"?> <project name="HelloWorld" default="run" basedir="."> <property name="src" value="src"/> <property name="dest" value="classes"/> <property name="hello_jar" value="hello.jar"/> <target name="init"> <mkdir dir="${dest}"/> </target> <target name="compile" depends="init"> <javac srcdir="${src}" destdir="${dest}" includeantruntime="on"/> </target> <target name="build" depends="compile"> <jar jarfile="${hello_jar}" basedir="${dest}"/> </target> <target name="run" depends="build"> <java classname="com.netease.Ant_test" classpath="${hello_jar}"/> </target> <target name="clean"> <delete dir="${dest}"/> <delete file="${hello_jar}"/> </target> <target name="return" depends="clean,run"> <ant target="clean"/> <ant target="run"/> </target> </project>
步骤5、进入cmd控制台运行ant命令
(1)一次执行:输入ant,配置的默认执行run任务。
由于依赖关系,依次执行以下任务:init(初始化,如创建目录)、compile(编译java文件为class字节码文件)、build(创建jar包)、run(运行程序);
(2)分步执行:ant init、ant compile、ant build、ant run
附加规范目录结构、简单目录结构:
<?xml version="1.0" encoding="UTF-8"?> <project name="HelloWorld" default="run" basedir="."> <property name="src" value="src"/> <property name="dest" value="build/classes"/> <property name="lib" value="lib"/> <property name="hello_jar" value="hello.jar"/> <target name="init"> <mkdir dir="${dest}"/> </target> <target name="compile" depends="init"> <javac srcdir="${src}" destdir="${dest}" includeantruntime="on"/> </target> <target name="build" depends="compile"> <jar jarfile="${hello_jar}" basedir="${dest}"/> <mkdir dir="${lib}"/> <jar jarfile="${lib}/${hello_jar}" basedir="${dest}"></jar> </target> <target name="run" depends="build"> <java classname="com.netease.Ant_test" classpath="${hello_jar}"/> <java classname="com.netease.Ant_test" classpath="${lib}/${hello_jar}"/> </target> <target name="clean"> <delete dir="${dest}"/> <delete file="${hello_jar}"/> <delete file="${lib}/${hello_jar}"/> </target> <target name="return" depends="clean,run"> <ant target="clean"/> <ant target="run"/> </target> </project>
总结Ant(下面引用的例子没有设置property变量引用)
一、 Ant的常用任务
在Ant工具中每一个任务封装了具体要执行的功能,是Ant工具的基本执行单位。在本小节中,主要引导读者来看下Ant的常用任务及其使用举例。
1. copy任务
该任务主要用来对文件和目录的复制功能。举例如下:
Eg1.复制单个文件:<copy file="file.txt" tofile="copy.txt"/>
Eg2.对文件目录进行复制:
<copy todir="../newdir/dest_dir">
<fileset dir="src_dir"/>
</copy>
Eg3. 将文件复制到另外的目录:
<copy file="file.txt" todir="../other/dir"/>
2. delete任务
对文件或目录进行删除,举例如下:
Eg1. 删除某个文件:<delete file="photo/amigo.jpg"/>
Eg2. 删除某个目录:<delete dir="photo"/>
Eg3. 删除所有的备份目录或空目录:
<delete includeEmptyDirs="true">
<fileset dir="." includes="**/*.bak"/>
</delete>
3. mkdir任务
创建目录。eg:<mkdir dir="build"/>
4. move任务
移动文件或目录,举例如下:
Eg1. 移动单个文件:<move file="fromfile" tofile=”tofile”/>
Eg2. 移动单个文件到另一个目录:<move file="fromfile" todir=”movedir”/>
Eg3. 移动某个目录到另一个目录:
<move todir="newdir">
<fileset dir="olddir"/>
</move>
5. echo任务
该任务的作用是根据日志或监控器的级别输出信息。它包括message、file、append和level四个属性,举例如下:
<echo message="Hello,Amigo" file="logs/system.log" append="true">
6、javac 编译任务
7、java运行java程序任务
8、jar打包任务
二、利用Ant构建和部署Java工程
Ant可以代替使用javac、java和jar等命令来执行java操作,从而达到轻松的构建和部署Java工程的目的。下面来看几个知识点。
1. 利用Ant的javac任务来编译java程序
Ant的javac任务用于实现编译Java程序的功能。下面来看一个简单的例子:
首先我们建立名为antstudy的Java工程,建立src目录为源代码目录,在src目录下建立HelloWorld.java这个类文件。该类文件的内容如下:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello,Amigo");
}
}
同时在antstudy工程的根目录下建立build.xml文件,在该文件中编译src目录下的java文件,并将编译后的class文件放入build/classes目录中,在编译前,需清除classes目录,该文件的内容如下:
<?xml version="1.0"?>
<project name="javacTest"default="compile" basedir=".">
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile" depends="clean">
<mkdir dir="build/classes"/>
<javac srcdir="src" destdir="build/classes"/>
</target>
</project>
运行该build.xml文件,可在工程中看到新增了build/classes目录,并在该目录中生成了编译后的HelloWorld.class文件。
2. 使用Ant的java任务运行Java程序
Ant中可以使用java任务实现运行Java程序的功能。下面在1的例子中进行如下的修改,修改后的build.xml文件的内容如下:
<?xml version="1.0"?>
<project name="javaTest" default="jar" basedir=".">
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile" depends="clean">
<mkdir dir="build/classes"/>
<javac srcdir="src" destdir="build/classes"/>
</target>
<target name="run" depends="compile">
<java classname="HelloWorld">
<classpath>
<pathelement path="build/classes"/>
</classpath>
</java>
</target>
</project>
运行该build.xml文件,可在控制台看到HelloWorld的main方法的输出。
3. 使用Ant的jar任务生成jar文件
读者可以在上例的基础上更进一步,来生成jar包,可在run这个target下再加上如下target:
<target name="jar" depends="run">
<jar destfile="helloworld.jar" basedir="build/classes">
<manifest>
<attribute name="Main-class" value="HelloWorld"/>
</manifest>
</jar>
</target>
此时将ant的project的default属性设置为jar,同时运行该build.xml文件,运行完毕后,可看到在工程目录下生成了一个jar包HelloWorld.jar。
4. 使用Ant的war任务打包J2EE Web项目
建立一个J2EE Web工程,其目录结构如下图所示:
其中src为源代码目录,WebRoot为各jsp存放目录,lib为工程的包目录。在antwebproject工程目录下建立了build.xml文件,该文件为该工程的Ant构件文件。读者可以src目录下放入在前续例子中开发的HelloWorld.java文件,并在WebRoot下建立index.jsp文件,其内容很简单,就是输出Hello信息,代码如下所示:
<%@ page language="java" contentType="text/html; charset="UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>ant打包测试</title>
</head>
<body>
Hello,Ant
</body>
</html>
接下来编写build.xml文件,其内容如下:
<?xml version="1.0"?>
<project name="antwebproject" default="war"basedir=".">
<property name="classes" value="build/classes"/>
<property name="build"value="build"/>
<property name="lib"value="WebRoot/WEB-INF/lib"/>
<!-- 删除build路径-->
<target name="clean">
<delete dir="build"/>
</target>
<!-- 建立build/classes路径,并编译class文件到build/classes路径下-->
<target name="compile" depends="clean">
<mkdir dir="${classes}"/>
<javac srcdir="src" destdir="${classes}"/>
</target>
<!-- 打war包-->
<target name="war" depends="compile">
<war destfile="${build}/antwebproject.war" webxml="WebRoot/WEB-INF/web.xml">
<!-- 拷贝WebRoot下除了WEB-INF和META-INF的两个文件夹-->
<fileset dir="WebRoot" includes="**/*.jsp"/>
<!-- 拷贝lib目录下的jar包-->
<lib dir="${lib}"/>
<!-- 拷贝build/classes下的class文件-->
<classesdir="${classes}"/>
</war>
</target>
</project>
各target的作用在内容中已经进行说明,在此不再赘述。运行该build文件,更新目录后,可看到在build目录下生成了antwebproject.war文件,解开后可看到其目录结构如下:
--META-INF
--MANIFEST.MF
--index.jsp
--WEB-INF
--lib
--log4j-1.2.9.jar
--classes
--HelloWorld.class
--web.xml
读者可以将该war包拷贝到Tomcat的目录下看一下运行结果。