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

利用ant构建和部署java项目

2014-09-02 16:58 393 查看
ant可以代替使用javac、java和jar等命令来执行java操作,从而达到轻松的构建和部署java项目的目的。
1、利用ant的javac命令来编译java程序
ant的javac命令用于实现编译java程序的功能。建立名为JavaTestPro的Java项目,建立src目录为源代码目录,在src目录下建立HelloWorld.java文件
public class HelloWorld{
public static void main(String[] args){
System.out.println("hello world!");
}
}
同时在项目根目录下建立build.xml文件,在该文件中编译src目录下的java文件,并将编译后的class文件放入build/classes目录中,在编译前,需清除classes目录
build.xml文件的内容如下:
<?xml version="1.0"?>
<project name="javacTest" default="compile" basedir=".">
<target name="clean">
<delete dir="${basedir}/build"/>
</target>
<target name="compile" depends="clean">
<mkdir dir="${basedir}/build/classes"/>
<javac srcdir="${basedir}/src" destdir="${basedir}/build/classes"/>
</target>
</project>
cd 到项目JavaTestPro的目录,执行ant命令后,可以在该目录下发现新生成的build/classes子目录,编译生成的HelloWorld.class文件在该目录下

2、使用java命令执行java程序
ant中可以使用java命令实现运行java程序的功能,在上面的build.xml基础上做修改

<?xml version="1.0"?>
<project name="javacTest" default="run" basedir=".">
<target name="clean">
<delete dir="${basedir}/build"/>
</target>
<target name="compile" depends="clean">
<mkdir dir="${basedir}/build/classes"/>
<javac srcdir="${basedir}/src" destdir="${basedir}/build/classes"/>
</target>
<target name="run" depends="compile">
<java classname="HelloWorld">
<classpath>
<pathelement path="${basedir}/build/classes"/>
</classpath>
</java>
</target>
</project>
在项目目录下运行ant就会在控制台看见输出:"[java] hello world!"

3、使用jar命令生成jar文件
还可以在上面的build.xml上更进一步,来生成jar包

<?xml version="1.0"?>
<project name="javacTest" default="jar" basedir=".">
<target name="clean">
<delete dir="${basedir}/build"/>
</target>
<target name="compile" depends="clean">
<mkdir dir="${basedir}/build/classes"/>
<javac srcdir="${basedir}/src" destdir="${basedir}/build/classes"/>
</target>
<target name="run" depends="compile">
<java classname="HelloWorld">
<classpath>
<pathelement path="${basedir}/build/classes"/>
</classpath>
</java>
</target>
<target name="jar" depends="run">
<jar destfile="helloworld.jar" basedir="${basedir}/build/classes">
<manifest>
<attribute name="Main-class" value="HelloWorld"/>
</manifest>
</jar>
</target>
</project>
其中project的default属性设置为jar,ant运行完毕后,可看到在项目的根目录下生成了一个helloworld.jar的jar包
java -jar helloworld.jar

4、使用war命令打包JavaEE项目
建立一个JavaEE项目,其中src为java源代码目录,WebContent为各jsp存放目录,lib为项目引用的包的目录。在WebTest项目目录下建立了build.xml,该文件为该工程的ant构件文件
在src目录下放入HelloWorld.java文件,并在WebContent下建立HelloJSP.jsp文件,其内容很简单,就是输出hello信息
HelloJSP.jsp文件的内容是:
<%@ 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>war test for ant</title>
</head>
<bode>
Hello JSP!Hello Ant!
</body>
</html>

build.xml中的内容如下
<?xml version="1.0" encoding="UTF-8"?>
<project name="WebTest" default="war" basedir=".">
<property name="classes" value="${basedir}/build/classes"/>
<property name="build" value="${basedir}/build"/>
<property name="lib" value="${basedir}/WebContent/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="${basedir}/src" destdir="${classes}"/>
</target>
<!--打war包-->
<target name="war" depends="compile">
<war destfile="${build}/WebTest.war" webxml="${basedir}/WebContent/WEB-INF/web.xml">
<!-- 拷贝WebRoot下除了WEB-INF和META-INF的两个文件夹-->
<fileset dir="${basedir}/WebContent" includes="**/*.jsp"/>
<!-- 拷贝lib目录下的jar包-->
<lib dir="${lib}"/>
<!--拷贝build/classes下的class文件-->
<classes dir="${classes}"/>
</war>
</target>
</project>
在c:\ThinkInJavaCode\WebTest目录下运行ant后,就生成了WebTest.war文件,然后可以将其放入Web容器(如Tomcat)的相应目录下(${Tomcate安装目录}\webapps)运行该web项目了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: