您的位置:首页 > 编程语言 > Java开发

用Ant实现Java项目的自动构建和部署(转)

2014-12-24 10:23 579 查看
Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作。

一. 安装与配置

下载地址:http://ant.apache.org/,在本文中下载的是1.7.0版本。解压到某个目录(例如E:"apache-ant-1.7.0),即可使用。

添加系统环境变量:ANT_HOME,该变量指向Ant解压后的根目录,在此为E:"apache-ant-1.7.0。

安装与配置完毕后,读者可以测试一下Ant是否可用,首先进入Ant的bin目录,运行命令ant –version,若安装和配置成功,则会显示Ant版本信息,如下图所示:

<?xml version="1.0"?>

<project name="helloWorld">

<target name="sayHelloWorld">

<echo message="Hello,Amigo"/>

</target>

</project>

读者可以进入E盘,然后运行ant sayHelloWorld,可以看到如下的运行结果:

<?xml version="1.0"?>

<project name="projectStudy" default="sayBaseDir" basedir="E:"apache-ant-1.7.0">

<target name="sayBaseDir">

<echo message="The base dir is: ${basedir}"/>

</target>

</project>
从上面的内容我们可以看出,在这里定义了default属性的值为sayBaseDir,即当运行ant命令时,若未指明执行的target时,默认执行的target的sayBaseDir,同时还定义了basedir属性的值为E:"apache-ant-1.7.0,进入E盘后运行ant命令,可看到运行的结果,如下图所示:

<?xml version="1.0"?>

<project name="targetStudy">

<target name="targetA" if="ant.java.version">

<echo message="Java Version: ${ant.java.version}"/>

</target>

<target name="targetB" depends="targetA" unless="amigo">

<description>

a depend example!

</description>

<echo message="The base dir is: ${basedir}"/>

</target>

</project>

进入E盘后运行ant targetB,可看到如下图所示的运行结果:

<?xml version="1.0"?>

<project name="propertyStudy" default="example">

<property name="name" value="amigo"/>

<property name="age" value="25"/>

<target name="example">

<echo message="name: ${name}, age: ${age}"/>

</target>

</project>
该例的运行结果如下图所示:

<?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工程,其目录结构如下图所示:

<!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的目录下看一下运行结果。

五. 总结

在本文中,笔者由浅至深详细描述了Ant的安装与配置、关键元素和常用任务。并通过实例讲述了Ant在我们Java项目中的应用,讲述了编译、运行java程序,以及打jar包、war包等知识,引领读者进入Ant的奇妙世界。在本文中可以看到,Ant在自动构建和部署Java程序方面方便易用,而且非常灵活,不失为我们Java开发者的绝佳帮手。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: