easy0917 发表于 2013-2-6 08:46:06

利用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
页: [1]
查看完整版本: 利用Ant构建和部署Java工程