3月1日,阴天。今天周六,休息。今年冬天干旱,雾霾频发,好在从初六开始,“风雨送春归,飞雪迎春到”,就是雨雪小点,也难怪,“春雨贵如油”嘛,真心盼望“下得满街流,滑倒解学士,笑坏一群牛”。
书接上回,列位看官最急于想知道如何使用单独的Ant来编译和运行java程序,且看如下分解:
三、利用Ant构建和部署Java工程
第一步,把示例工程antTest,放入自定义的文件夹E:\ant_test下,如图
第二步,工程的根目录下新建build.xml文件,如图
build.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project name="javaTest" >
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile" depends="clean">
<mkdir dir="build/classes"/>
<javac srcdir="src" destdir="build/classes" includeAntRuntime="false"/>
</target>
<target name="run" depends="compile">
<java classname="edu.eurasia.HelloWorld">
<classpath>
<pathelement path="build/classes"/>
</classpath>
</java>
</target>
<target name="jar" depends="run">
<jar destfile="helloworld.jar" basedir="build/classes">
<manifest>
<attribute name="Main-class" value="HelloWorld"/>
</manifest>
</jar>
</target>
</project>
第三步,
运行该build.xml文件,执行ant run 命令,可在控制台看到HelloWorld的main方法的输出。
Ant采用一种灵活的方式来定义依赖关系,每个目标的定义依据的是在它在能够执行之前必须完成的其他所有目标。这是使用target元素的depends属性来实现的。
这种方法允许执行项目任何阶段的生成过程;Ant会首先执行已定义的先决阶段。在上面的例子中,如果让Ant完成run步骤,它将判断出需要首先执行clean和compile这两个目标。clean目标不依赖其他任何目标,因此它将首先被执行,然后Ant检查compiletarget,发现它依赖clean目标;由于已经执行了后者,Ant不会再次执行它,因而开始执行compile目标,最后可以执行run任务本身,注意run的后面还有一个jar任务未被执行。
如果使用Ant的jar任务生成jar文件,执行ant jar 命令,可看到在工程目录下生成了一个jar包HelloWorld.jar。
注意目标出现在生成文件中的顺序并不重要:执行顺序是由depends属性唯一确定的。
四、使用Ant的war任务打包JAVA EE Web项目
建立一个JAVA EE 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=UTF-8">
<title>Ant打包测试</title>
</head>
<body>
Hello,Ant Dog!
</body>
</html>
编写build.xml文件,其内容如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project name="antwebproject" >
<property name="classes" value="build/classes"/>
<property name="build" value="build"/>
<property name="lib" value="WebRoot/WEB-INF/lib"/>
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile" depends="clean">
<mkdir dir="${classes}"/>
<javac srcdir="src" destdir="${classes}" includeAntRuntime="false"/>
</target>
<target name="war" depends="compile">
<war destfile="${build}/antwebproject.war" webxml="WebRoot/WEB-INF/web.xml">
<fileset dir="WebRoot" includes="**/*.jsp"/>
<lib dir="${lib}"/>
<classes dir="${classes}" />
</war>
</target>
</project>
运行该build.xml文件,执行ant war 命令,可看到在build目录下生成了antwebproject.war文件。将该war包拷贝到Tomcat的目录webapps下,运行后,完成部署。