利用Ant构建和部署Java工程

news/2025/3/22 2:05:51
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

https://dhexx.cn/news/show-2339571.html

相关文章

Oracle Fast-Start Fault Recovery 说明

官网的链接&#xff1a; http://docs.oracle.com/cd/E11882_01/server.112/e16638/instance_tune.htm#PFGRF13015 一.Instance Recovery Instance andcrash recovery are the automatic application of redo log records to Oracle datablocks after a crash or system failu…

Oracle 函数

SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual; A A ZERO SPACE --------- --------- --------- --------- 65 97 48 32 2…

Oracle PL/SQL 优化与调整 – PL/SQL Native Compilation 说明

一.相关概述 在之前的Bulk的那篇blog里提到了Oracle 的2个引擎&#xff1a;PL/SQL 引擎和SQL 引擎。 Oracle PL/SQL 优化与调整 -- Bulk 说明 http://www.cndba.cn/Dave/article/1534 Oracle 使用2个引擎来执行SQL和代码块&#xff1a;SQL 引擎和PL/SQL 引擎&#xff0c; O…

重定向和转发的区别【转】

一、调用方式 我们知道&#xff0c;在servlet中调用转发、重定向的语句如下&#xff1a;request.getRequestDispatcher("new.jsp").forward(request, response);//转发到new.jspresponse.sendRedirect("new.jsp");//重定向到new.jsp在jsp页面中你也会看到通…

VBox 对网络模式 增强

在之前的Blog里提到了VBox 的4中网络类型&#xff1a; NAT Bridged Adapter Internal Host-onlyAdapter 具体参考&#xff1a; Oracle Virtual Box 安装使用 说明 http://www.cndba.cn/Dave/article/635 今天升级了一个VBox 到4.1.8&#xff0c;在这个版本中对网络这块有…

对团队诠释比较好的文章【转】

[aligncenter][sizelarge][colorbrown]我一直坚信只有完美的团队&#xff0c;没有完美的个人&#xff01;[/color][/size][/align]首先&#xff0c;就是团队精神。凡是能够取得骄人业绩的团队&#xff0c;无一不是具有团队精神的。在这几年的销售职业生涯里&#xff0c;让我深刻…

Oracle PL/SQL 概述

官网的链接&#xff1a; Overview of PL/SQL http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/overview.htm Server-Side Programming: PL/SQL and Java http://docs.oracle.com/cd/E11882_01/server.112/e25789/srvrside.htm 一.PL/SQL 定义 PL/SQL is theOracle D…

Hibernate-核心接口

[b][colorred] Session 接口[/color][/b] Session 接口对于Hibernate 开发人员来说是一个最重要的接口。然而在Hibernate 中&#xff0c;实例 化的Session是一个轻量级的类&#xff0c;创建和销毁它都不会占用很多资源。这在实际项目中确实很重要&#xff0c; 因为在客户程序中…

Oracle Alerts 与 Metrics(警告与度量)说明

一.Alerts 和 Metrics说明 官方链接&#xff1a; Monitoring and Tuning the Database http://docs.oracle.com/cd/E11882_01/server.112/e10897/montune.htm#CACCIHAB Alerts help you monitor your database. Most alerts notify youof when particular metric thresholds…

Javascript学习进阶——JS之美 [转]

var a[-1,-2,-3,5,6,-1];function f(s,e){ var ret[]; for(var i in s) { ret.push(e(s[i])); } return ret;}var bf(a,function(n){return n>0?n:0});alert(b);//result://0,0,0,5,6,0