`
luozhonghua2014
  • 浏览: 62453 次
文章分类
社区版块
存档分类
最新评论

ANT安装与测试和简明教程

 
阅读更多
1 window
一、安装ant

到官方主页http://ant.apache.org下载新版(目前为Ant1.8.1)的ant,得到的是一个apache-ant-1.8.1-bin.zip的压缩包。将其解压到你的硬盘上,例如:C:\apache-ant-1.8.1。

二、配置环境变量

window中设置ant环境变量:

ANT_HOME C:/ apache-ant-1.8.1

path C:/ apache-ant-1.8.1/bin

classpath C:/apache-ant-1.8.1/lib

注意:【
  配置环境变量:我的电脑----属性-----高级----环境变量
如:ANT_HOME:C:\apache-ant-1.8.1
PATH:%ANT_HOME%\bin (为了方便在dos环境下操作)
实验了总是失败,没办法换成地址C:/ apache-ant-1.8.1/bin,而不再使用变量。。。成功了。。

三、验证ant

为了验证ant是否成功安装,可以进行如下操作:

依次选择:开始->运行->cmd,输入如下命令:ant

如果出现如下内容,说明安装成功:

Buildfile: build.xml does not exist!

Build failed

【说明ant安装成功!因为ant默认运行build.xml文件,这个文件需要我们建立。】

查看版本:ant -version


但如果出现如下内容,说明安装失败:(可以重复前述步骤,直至安装成功。)

'ant'不是内部或外部命令,也不是可运行的程序或批处理文件。

从别处移动过来的:

使用:
(1)在D盘根目录下建立build.xml

1<?xmlversion="1.0"encoding="GBK"?>
2<projectname="测试脚本"default="copyfile"basedir=".">
3<targetname="copyfile">
4<copyfile="d:/a.txt"todir="e:/Temp"overwrite="true"/>
5</target>
6</project>


(2)在D盘根目录下建立文件a.txt。
(3)进入dos,
d:
ant

此时可在E:/Temp目录下见到文件aa.txt,内容与a.txt一样,即拷贝成功!



2 Linux 下的安装

这里以我使用的 ubuntu 为例:

http://www.360doc.com/content/08/0408/14/25392_1174537.shtml

http://iliuyong.javaeye.com/blog/228764

http://www.chedong.com/tech/ant.html

参考资料:

【工具】ANT的安装和配置(windows)
http://www.cnitblog.com/intrl/archive/2009/04/11/56254.html

ANT的安装/配置笔记
http://www.chedong.com/tech/ant.html

linux的可执行文件是什么后缀?
http://zhidao.baidu.com/question/41716875.html?si=5




3 ANT简明教程

一、ant关键元素

1. project元素

project 元素是 Ant 构件文件的根元素, Ant 构件文件至少应该包含一个 project 元素,否则会发生错误。在每个 project 元素下,可包含多个 target 元素。接下来向读者展示一下 project 元素的各属性。

1)name属性

用于指定 project 元素的名称。

2)default属性

用于指定 project 默认执行时所执行的 target 的名称。

3)basedir属性

用于指定基路径的位置。该属性没有指定时,使用 Ant 的构件文件的附目录作为基准目录。

<?xml version="1.0" ?>
<project name ="antPro" default ="getBaseDir" basedir ="C:/ThinkInJavaCode">
        <target  name="getBaseDir">
               <echo message="The base dir is: ${basedir}"/>
        </target>
</project>

从上例可以看出,在这里定义了default 属性的值为getBaseDir ,即当运行ant 命令时,如果没有指明待执行的target,则将执行默认的target--getBaseDir 。此外,还定义了basedir 属性的值为 "C:/ThinkInJavaCode" ,进入"C:/ThinkInJavaCode" 后运行ant 命令,得一下结果:

Buildfile: C:\ThinkInJavaCode\build.xml

sayBaseDir:
     [echo] The base dir is: C:\ThinkInJavaCode

BUILD SUCCESSFUL
Total time: 0 seconds

2.target元素

target为Ant的基本执行单元,它可以包含一个或多个具体的任务。多个target 可以存在相互依赖关系。它有如下属性:

1)name属性

指定 target 元素的名称,这个属性在一个 project 元素中是唯一的。我们可以通过指定 target 元素的名称来指定某个 target 。

2)depends属性

用于描述 target 之间的依赖关系,若与多个 target 存在依赖关系时,需要以“,”间隔。 Ant 会依照 depends 属性中 target 出现的顺序依次执行每个 target 。被依赖的 target 会先执行。

3)if属性

用于验证指定的属性是否存在,若不存在,所在 target 将不会被执行。

4)unless属性

该属性的功能与 if 属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在 target 将会被执行。

5)description属性

该属性是关于 target 功能的简短描述和说明。

举例说明如下:

<?xml version="1.0" ?> 
<project name ="targetPro" default="targetB"> 
<target name="targetA" if ="ant.java.version"> 
        <echo message ="Java Version: ${ant.java.version}"/> 
    </target> 
    <target name="targetB"  depends ="targetA" unless ="philander"> 
        <description> 
            a depend example! 
        </description> 
        <echo message ="The base dir is: ${basedir}"/> 
    </target> 
</project>

从以下结果后可以看到,我们运行的是名为 targetB 的target ,由于它依赖于targetA ,所以 targetA 将首先被执行,同时因为系统配置了JDK,所以 ant.java.version 属性存在,执行了targetA,输出信息:"[echo] Java Version: 1.6 ",targetA 执行完毕后,接着执行 targetB ,因为philander不存在,而unless属性是在不存在时进入所在target 的,由此可知 targetB 得以执行,输出信息:"[echo] The base dir is: C:\ThinkInJavaCode"。

Buildfile: C:\ThinkInJavaCode\build.xml

targetA:
     [echo] Java Version: 1.6

targetB:
     [echo] The base dir is: C:\ThinkInJavaCode

BUILD SUCCESSFUL
Total time: 0 seconds

3.property元素

property元素可看作参量或者参数的定义,project 的属性可以通过 property 元素来设定,也可在 Ant 之外设定。若要在外部引入某文件,例如 build.properties 文件,可以通过如下内容将其引入:

<property file=” build.properties”/>

property 元素可用作 task 的属性值。在 task 中是通过将属性名放在“ ${ ”和“ } ”之间,并放在 task 属性值的位置来实现的。

Ant 提供了一些内置的属性,它能得到的系统属性的列表与 Java 文档中 System.getPropertis() 方法得到的属性一致,这些系统属性可参考 sun 网站的说明。同时, Ant 还提供了一些它自己的内置属性,如下:

basedir:project 基目录的绝对路径;

ant.file:buildfile的绝对路径,上例中ant.file值为C:\ThinkInJavaCode\build.xml;

ant.version:Ant 的版本信息,本文为1.8.1 ;

ant.project.name:当前指定的project的名字,即前文说到的project的name属性值;

ant.java.version:Ant 检测到的JDK版本,本文为 1.6 。

举例说明如下:

<? xml version="1.0" ?>
<project  name ="propertyPro"  default ="example">
    <property  name ="name"  value ="philander"/>
    <property  name ="age"  value ="25"/>
    <target  name ="example">
         <echo  message ="name: ${name}, age: ${age}"/>
    </target>
</project>

上例中用户设置了名为name 和age的两个属性,这两个属性设置后,在下文中可以通过 ${name} 和 ${age} 分别取得这两个属性值。

二、ANT常用命令

1.copy 命令

copy主要用来对文件和目录的复制功能。举例如下:

eg1. 复制单个文件:

<copy file="original.txt" tofile="copied.txt"/>

eg2. 对文件目录进行复制:

<copy todir="../dest_dir">
      <fileset dir="src_dir"/>
 </copy>

eg3. 将文件复制到另外的目录:

<copy file="source.txt" todir="../home/philander"/>

2.delete命令

对文件或目录进行删除,举例如下:

eg1. 删除某个文件:

<delete file="/home/photos/philander.jpg"/>

eg2. 删除某个目录:

<delete dir="/home/photos"/>

eg3. 删除所有的备份目录或空目录:

<delete includeEmptyDirs="true">
       <fileset dir="." includes="**/*.bak"/>
</delete>

3.mkdir命令

创建目录。 eg :

<mkdir dir="/home/philander/build/classes"/>

4.move命令

移动文件或目录,举例如下:

eg1. 移动单个文件:

<move file="sourcefile" tofile=”destfile”/>

eg2. 移动单个文件到另一个目录:

<move file="sourcefile" todir=”movedir”/>

eg3. 移动某个目录到另一个目录:

<move todir="newdir"> <fileset dir="olddir"/></move>

5.echo命令

该任务的作用是根据日志或监控器的级别输出信息。它包括 message 、 file 、 append 和 level 四个属性,举例如下

<echo message="Hello,ANT" file="/home/philander/logs/ant.log" append="true">

三、利用ant构建和部署Java项目

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!");
     }
}

同时在JavaTestPro项目的根目录下建立build.xml 文件,在该文件中编译sr 目录下的Java文件,并将编译后的class文件放入build/classes 目录中,整个项目的目录结构如下:

|JavaTestPro

|src

|build

|classes

|build.xml

在编译前,需清除classes 目录,该文件的内容如下:

<?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>

在项目根目录(C:\ThinkInJavaCode\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>

接着,就可以在控制台看见输出:"[java] hello world!"

3.使用jar命令生成jar文件

还可以在上例的基础上更进一步,来生成jar包,可在run 这个 target 下再加上如下 target :

<?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包 。可通过运行以下命令来执行该jar包:

java -jar helloworld.jar

4.使用war命令打包JavaEE项目

建立一个JavaEE项目,其中src 为Java源代码目录,WebContent为各jsp存放目录,lib 为项目引用的的包的目录。在WebTest项目目录下建立了build.xml 文件,该文件为该工程的 Ant 构件文件。

|WebContent

|src

|build

|classes

|WebContent

|META-INF

|MANIFEST.MF

|WEB-INF

|lib

|classes

|HelloJSP.jsp

|build.xml

读者可以 src 目录下放入在前续例子中开发的 HelloWorld.java 文件,并在 WebContent下建立 HelloJSP.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=UTF-8">
<title>war test for ant</title>
</head>
<body>
      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)的相应目录下(${Tomcata安装目录}\webapps)运行该web项目了。




1 window 一、安装ant

到官方主页http://ant.apache.org下载新版(目前为Ant1.8.1)的ant,得到的是一个apache-ant-1.8.1-bin.zip的压缩包。将其解压到你的硬盘上,例如:C:\apache-ant-1.8.1。

二、配置环境变量

window中设置ant环境变量:

ANT_HOME C:/ apache-ant-1.8.1

path C:/ apache-ant-1.8.1/bin

classpath C:/apache-ant-1.8.1/lib

注意:【   配置环境变量:我的电脑----属性-----高级----环境变量
如:ANT_HOME:C:\apache-ant-1.8.1
PATH:%ANT_HOME%\bin (为了方便在dos环境下操作) 实验了总是失败,没办法换成地址C:/ apache-ant-1.8.1/bin,而不再使用变量。。。成功了。。

三、验证ant

为了验证ant是否成功安装,可以进行如下操作:

依次选择:开始->运行->cmd,输入如下命令:ant

如果出现如下内容,说明安装成功:

Buildfile: build.xml does not exist!

Build failed

【说明ant安装成功!因为ant默认运行build.xml文件,这个文件需要我们建立。】

查看版本:ant -version


但如果出现如下内容,说明安装失败:(可以重复前述步骤,直至安装成功。)

'ant'不是内部或外部命令,也不是可运行的程序或批处理文件。

从别处移动过来的:

使用:
(1)在D盘根目录下建立build.xml

1<?xmlversion="1.0"encoding="GBK"?>
2<projectname="测试脚本"default="copyfile"basedir=".">
3<targetname="copyfile">
4<copyfile="d:/a.txt"todir="e:/Temp"overwrite="true"/>
5</target>
6</project>


(2)在D盘根目录下建立文件a.txt。
(3)进入dos,
d:
ant

此时可在E:/Temp目录下见到文件aa.txt,内容与a.txt一样,即拷贝成功!



2 Linux 下的安装

这里以我使用的 ubuntu 为例:

http://www.360doc.com/content/08/0408/14/25392_1174537.shtml

http://iliuyong.javaeye.com/blog/228764

http://www.chedong.com/tech/ant.html

参考资料:

【工具】ANT的安装和配置(windows)
http://www.cnitblog.com/intrl/archive/2009/04/11/56254.html

ANT的安装/配置笔记
http://www.chedong.com/tech/ant.html

linux的可执行文件是什么后缀?
http://zhidao.baidu.com/question/41716875.html?si=5




3 ANT简明教程

一、ant关键元素

1. project元素

project 元素是 Ant 构件文件的根元素, Ant 构件文件至少应该包含一个 project 元素,否则会发生错误。在每个 project 元素下,可包含多个 target 元素。接下来向读者展示一下 project 元素的各属性。

1)name属性

用于指定 project 元素的名称。

2)default属性

用于指定 project 默认执行时所执行的 target 的名称。

3)basedir属性

用于指定基路径的位置。该属性没有指定时,使用 Ant 的构件文件的附目录作为基准目录。

<?xml version="1.0" ?>
<project name ="antPro" default ="getBaseDir" basedir ="C:/ThinkInJavaCode">
        <target  name="getBaseDir">
               <echo message="The base dir is: ${basedir}"/>
        </target>
</project>

从上例可以看出,在这里定义了default 属性的值为getBaseDir ,即当运行ant 命令时,如果没有指明待执行的target,则将执行默认的target--getBaseDir 。此外,还定义了basedir 属性的值为 "C:/ThinkInJavaCode" ,进入"C:/ThinkInJavaCode" 后运行ant 命令,得一下结果:

Buildfile: C:\ThinkInJavaCode\build.xml

sayBaseDir:
     [echo] The base dir is: C:\ThinkInJavaCode

BUILD SUCCESSFUL
Total time: 0 seconds

2.target元素

target为Ant的基本执行单元,它可以包含一个或多个具体的任务。多个target 可以存在相互依赖关系。它有如下属性:

1)name属性

指定 target 元素的名称,这个属性在一个 project 元素中是唯一的。我们可以通过指定 target 元素的名称来指定某个 target 。

2)depends属性

用于描述 target 之间的依赖关系,若与多个 target 存在依赖关系时,需要以“,”间隔。 Ant 会依照 depends 属性中 target 出现的顺序依次执行每个 target 。被依赖的 target 会先执行。

3)if属性

用于验证指定的属性是否存在,若不存在,所在 target 将不会被执行。

4)unless属性

该属性的功能与 if 属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在 target 将会被执行。

5)description属性

该属性是关于 target 功能的简短描述和说明。

举例说明如下:

<?xml version="1.0" ?> 
<project name ="targetPro" default="targetB"> 
<target name="targetA" if ="ant.java.version"> 
        <echo message ="Java Version: ${ant.java.version}"/> 
    </target> 
    <target name="targetB"  depends ="targetA" unless ="philander"> 
        <description> 
            a depend example! 
        </description> 
        <echo message ="The base dir is: ${basedir}"/> 
    </target> 
</project>

从以下结果后可以看到,我们运行的是名为 targetB 的target ,由于它依赖于targetA ,所以 targetA 将首先被执行,同时因为系统配置了JDK,所以 ant.java.version 属性存在,执行了targetA,输出信息:"[echo] Java Version: 1.6 ",targetA 执行完毕后,接着执行 targetB ,因为philander不存在,而unless属性是在不存在时进入所在target 的,由此可知 targetB 得以执行,输出信息:"[echo] The base dir is: C:\ThinkInJavaCode"。

Buildfile: C:\ThinkInJavaCode\build.xml

targetA:
     [echo] Java Version: 1.6

targetB:
     [echo] The base dir is: C:\ThinkInJavaCode

BUILD SUCCESSFUL
Total time: 0 seconds

3.property元素

property元素可看作参量或者参数的定义,project 的属性可以通过 property 元素来设定,也可在 Ant 之外设定。若要在外部引入某文件,例如 build.properties 文件,可以通过如下内容将其引入:

<property file=” build.properties”/>

property 元素可用作 task 的属性值。在 task 中是通过将属性名放在“ ${ ”和“ } ”之间,并放在 task 属性值的位置来实现的。

Ant 提供了一些内置的属性,它能得到的系统属性的列表与 Java 文档中 System.getPropertis() 方法得到的属性一致,这些系统属性可参考 sun 网站的说明。同时, Ant 还提供了一些它自己的内置属性,如下:

basedir:project 基目录的绝对路径;

ant.file:buildfile的绝对路径,上例中ant.file值为C:\ThinkInJavaCode\build.xml;

ant.version:Ant 的版本信息,本文为1.8.1 ;

ant.project.name:当前指定的project的名字,即前文说到的project的name属性值;

ant.java.version:Ant 检测到的JDK版本,本文为 1.6 。

举例说明如下:

<? xml version="1.0" ?>
<project  name ="propertyPro"  default ="example">
    <property  name ="name"  value ="philander"/>
    <property  name ="age"  value ="25"/>
    <target  name ="example">
         <echo  message ="name: ${name}, age: ${age}"/>
    </target>
</project>

上例中用户设置了名为name 和age的两个属性,这两个属性设置后,在下文中可以通过 ${name} 和 ${age} 分别取得这两个属性值。

二、ANT常用命令

1.copy 命令

copy主要用来对文件和目录的复制功能。举例如下:

eg1. 复制单个文件:

<copy file="original.txt" tofile="copied.txt"/>

eg2. 对文件目录进行复制:

<copy todir="../dest_dir">
      <fileset dir="src_dir"/>
 </copy>

eg3. 将文件复制到另外的目录:

<copy file="source.txt" todir="../home/philander"/>

2.delete命令

对文件或目录进行删除,举例如下:

eg1. 删除某个文件:

<delete file="/home/photos/philander.jpg"/>

eg2. 删除某个目录:

<delete dir="/home/photos"/>

eg3. 删除所有的备份目录或空目录:

<delete includeEmptyDirs="true">
       <fileset dir="." includes="**/*.bak"/>
</delete>

3.mkdir命令

创建目录。 eg :

<mkdir dir="/home/philander/build/classes"/>

4.move命令

移动文件或目录,举例如下:

eg1. 移动单个文件:

<move file="sourcefile" tofile=”destfile”/>

eg2. 移动单个文件到另一个目录:

<move file="sourcefile" todir=”movedir”/>

eg3. 移动某个目录到另一个目录:

<move todir="newdir"> <fileset dir="olddir"/></move>

5.echo命令

该任务的作用是根据日志或监控器的级别输出信息。它包括 message 、 file 、 append 和 level 四个属性,举例如下

<echo message="Hello,ANT" file="/home/philander/logs/ant.log" append="true">

三、利用ant构建和部署Java项目

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!");
     }
}

同时在JavaTestPro项目的根目录下建立build.xml 文件,在该文件中编译sr 目录下的Java文件,并将编译后的class文件放入build/classes 目录中,整个项目的目录结构如下:

|JavaTestPro

|src

|build

|classes

|build.xml

在编译前,需清除classes 目录,该文件的内容如下:

<?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>

在项目根目录(C:\ThinkInJavaCode\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>

接着,就可以在控制台看见输出:"[java] hello world!"

3.使用jar命令生成jar文件

还可以在上例的基础上更进一步,来生成jar包,可在run 这个 target 下再加上如下 target :

<?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包 。可通过运行以下命令来执行该jar包:

java -jar helloworld.jar

4.使用war命令打包JavaEE项目

建立一个JavaEE项目,其中src 为Java源代码目录,WebContent为各jsp存放目录,lib 为项目引用的的包的目录。在WebTest项目目录下建立了build.xml 文件,该文件为该工程的 Ant 构件文件。

|WebContent

|src

|build

|classes

|WebContent

|META-INF

|MANIFEST.MF

|WEB-INF

|lib

|classes

|HelloJSP.jsp

|build.xml

读者可以 src 目录下放入在前续例子中开发的 HelloWorld.java 文件,并在 WebContent下建立 HelloJSP.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=UTF-8">
<title>war test for ant</title>
</head>
<body>
      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)的相应目录下(${Tomcata安装目录}\webapps)运行该web项目了。




分享到:
评论

相关推荐

    ANT安装与使用教程

    以下是ANT安装与使用教程,旨在帮助项目部署人员快速掌握ANT的安装和基本使用。 硬件环境 ANT的安装和使用需要一台开发PC机,推荐配置为Windows 7操作系统。 软件环境 ANT的安装和使用需要JDK的支持,因此需要先...

    ant简明教程;ant调用bat方法

    【Ant简明教程:调用Bat方法】 Ant是Apache组织提供的一款开源的Java构建工具,它使用XML格式的配置文件来定义构建过程,包括编译、测试、打包、部署等任务。Ant以其灵活性和可扩展性深受Java开发者的喜爱。本教程...

    ant工具和ant教程

    Ant以其XML为基础的构建文件(build.xml)而著名,这些文件详细描述了如何编译、打包和测试Java应用程序。Ant的核心理念是“一切都是任务”,它通过预定义的任务和用户自定义的任务来执行各种构建操作。 在Ant教程...

    Ant安装与配置

    Ant(Apache Ant)是一款开源的Java构建工具,广泛应用于Java项目的自动化构建、编译、测试和部署等流程中。对于初次接触Web开发的新手来说,熟练掌握Ant的安装与配置是必不可少的一环。下面将详细阐述Ant的安装步骤...

    ANT简明教程

    9. **Ant与持续集成**:简述Ant在持续集成工具(如Jenkins、Hudson)中的角色,以及如何配置Ant任务进行自动化构建。 通过这个简明教程,读者应该能够快速上手Ant,理解其基本概念,并能够为自己的Java项目编写构建...

    ant +jmeter 生成测试报告.docx

    总结来说,通过 Ant 和 JMeter 的集成,我们可以实现自动化测试并生成专业的测试报告,这有助于我们更好地理解和分析测试数据,从而优化系统性能。务必按照上述步骤操作,并根据实际项目需求调整配置,以确保测试...

    eclipse下利用ant、junit进行自动化测试例子源码

    本示例主要展示了如何在Eclipse集成开发环境中利用ANT构建工具和JUnit单元测试框架进行自动化测试。以下是关于这些知识点的详细说明: 1. **Eclipse IDE**:Eclipse是一款流行的开源Java开发环境,支持多种语言的...

    Jmeter+ant自动生成测试报告的模板

    Jmeter+ant自动生成测试报告的模板,测试报告中增加TPS(Throughput)和90% Line等指标;

    Ant项目配置与测试用例管理

    这些文件可以帮助你理解如何在实际项目中配置和运行Ant与TestNG的集成。 总结来说,Ant项目配置与测试用例管理是Java开发中不可或缺的部分。Ant提供了灵活的构建机制,而TestNG则为测试提供了强大的支持。理解并...

    junit 和ant 中文教程

    JUnit 和 Ant 是 Java 开发中两个非常重要的工具。JUnit 是一个用于编写和运行自动化单元测试...在学习这个中文教程后,开发者能够熟练掌握Java项目自动化测试和构建的流程,为项目的持续集成和持续交付打下坚实基础。

    JUnit与Ant教程

    JUnit与Ant教程JUnit与Ant教程JUnit与Ant教程JUnit与Ant教程JUnit与Ant教程

    自动化测试系列二 ANT

    6. **条件与循环**:ANT的和标签允许在构建脚本中添加条件判断和循环逻辑,使脚本更灵活。 7. **构建过程的定制化**:ANT的XML配置文件是其灵魂,可以根据项目需求自定义构建流程,实现高度定制化的自动化测试。 ...

    自动化测试系列一 ANT

    5. **ANT与自动化测试**:ANT能与多种测试框架集成,如JUnit、TestNG等,方便地实现测试自动化。开发者可以设置ANT在每次构建时自动运行测试,确保代码改动不会引入新的错误。 6. **ANT的优势**:ANT具有跨平台性,...

    jenkins+ant+jmeter自动化接口测试框架搭建

    总结来说,搭建Jenkins+Ant+JMeter自动化接口测试框架涉及到软件工具的安装配置、环境变量的设置、测试脚本的编写和执行、以及自动构建和测试流程的管理。这个过程不仅需要掌握各个工具的使用方法,还需要有一定的...

    ANT教程的介绍

    **Ant与Make的对比** Ant和Make都是构建工具,但它们的应用领域有所不同。Make最初用于C/C++项目,而Ant则更常用于Java项目。虽然两者都可以处理类似的任务,但Ant的XML语法和Java基础使其在Java世界中更受欢迎。 *...

    Ant入门学习手册(java ant教程)

    - **使用CVS知识库**:Ant提供了与版本控制系统集成的功能,可以直接从CVS、SVN等版本库中检出代码,进行构建和部署。 - **自定义任务**:通过Java编程,可以创建自定义任务,实现Ant标准任务无法满足的特殊构建需求...

Global site tag (gtag.js) - Google Analytics