利用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="run" 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:
<jar destfile="helloworld.jar" basedir="build/classes">
<manifest><!--这里的作用是在MANIFEST.MF文件中添加Main-class: HelloWorld,说明该类为主类并且执行该jar文件也会简单很多,否则在终端执行该jar文件需要输入很长的命令-->
<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工程,其目录结构如下图所示:<%@ 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="AntStudy" default="war" basedir="."><!--basedir="."指build.xml所在的目录,这里指工程目录--> <property name="classes" value="build/classes" /> <property name="build" value="build" /> <property name="lib" value="WebContent/WEB-INF/lib" /> <!--删除build路径--> <target name="clean"> <delete dir="build" /><!--删除AntStudy工程目录下build目录--> </target> <!--建立build/classes路径,并编译class文件到build/classes路径下--> <target name="compile" depends="clean"> <mkdir dir="${classes}"/><!--在工程AntStudy工程目录下创建build/classes目录结构--> <javac srcdir="src" destdir="${classes}" /><!--编译工程目录下的src中的java文件,生成的class文件包保存到build/classes中--> </target> <!--打war包--> <target name="war" depends="compile"> <war destfile="${build}/AntStudy.war" webxml="WebContent/WEB-INF/web.xml"> <!--拷贝WebContent下除了WEB-INF和META-INF--> <fileset dir="WebContent" includes="**/*.jsp" /> <!--拷贝lib目录下的jar包--> <lib dir="${lib}"/> <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的目录下看一下运行结果。
五. 总结
在本文中,笔者由浅至深详细描述了Ant的安装与配置、关键元素和常用任务。并通过实例讲述了Ant在我们Java项目中的应用,讲述了编译、运行java程序,以及打jar包、war包等知识,引领读者进入Ant的奇妙世界。在本文中可以看到,Ant在自动构建和部署Java程序方面方便易用,而且非常灵活,不失为我们Java开发者的绝佳帮手。