zoukankan      html  css  js  c++  java
  • Ant在Java项目中的使用(一眼就看会)

    摘自:https://www.cnblogs.com/Donnnnnn/p/7498224.html

    Ant在Java项目中的使用(一眼就看会)

    参考:http://www.cnblogs.com/zhengqiang/p/5557155.html

    Ant是跨平台的构建工具,它可以实现项目的自动构建和部署等功能。在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作。

    一、安装与部署

    1.1 下载

    下载地址:https://archive.apache.org/dist/ant/binaries/

    我下载的是1.7.1版本。解压到某个目录(例如D:ant-1.7.1),即可使用。

    1.1 配置环境变量

    1、添加系统环境变量:ANT_HOME,该变量指向Ant解压后的根目录,在此为D:ant-1.7.1

    2、在系统环境变量path中添加Ant的bin目录:D:ant-1.7.1in

    验证:在DOS窗口输入  ant  -version  ,出现下面结果

    二、Ant关键元素

    Ant的构建文件是基于XML编写的,默认名称为build.xml。为了更清楚的了解Ant,在这里编写一个简单的Ant程序,用来展现Ant的功能,让读者对Ant有一个初步的了解。首先在D盘下建立一个build.xml文件,内容如下:

    例子:

    然后在命令行模式切换到D盘,运行ant  sayHelloWorld命令,其中sayHelloWorld为需要执行的任务的名称。ant命令默认寻找build.xml文件。出现如下结果,证明正确

     

     

     

    接下来开始向读者讲解本节的重点:Ant的关键元素project、target、property和task

     

    2.1 project元素

     

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

     

    (1)name属性

     

    用于指定project元素的名称。

     

    (2)default属性

     

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

     

    (3)basedir属性

     

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

     

    例子:

     

    修改上面的build.xml内容如下:

     

     

    在命令行模式输入ant命令,此时没有指定执行的target名称,成功出现以下结果:

     

    从上面的内容我们可以看出,在这里定义了default属性的值为sayBaseDir,即 当运行ant命令时,若未指明执行的target时,默认执行的target的sayBaseDir,同时还定义了basedir属性的值为 D:ant-1.7.1

     

     

    2.2 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功能的简短描述和说明。

     

    例子:

     

    修改上面的build.xml如下:

     

    命令行模式,进入D盘后运行ant targetB,结果如下:

     

    分析结果后可以看到,我们运行的是名为targetB的target,因该target 依赖于targetA,所以targetA将首先被执行,同时因为系统安装了java环境,所以ant.java.version属性存在,执行了 targetA这个target,输出信息:[echo] Java Version: 1.6,targetA执行完毕后,接着执行targetB,因为amigo不存在,而unless属性是在不存在时进入所在的target的,由此可知 targetB得以执行,输出信息:The base dir is: D:

    2.3 property元素

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

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

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

    同时,Ant还提供了一些它自己的内置属性,如下:

    basedir:project基目录的绝对路径,该属性在讲解project元素时有详细说明;

    ant.file:buildfile的绝对路径,如上面的各例子中,ant.file的值为D:uild.xml;

    ant.version:Ant的版本,在本文中,值为1.7.1;

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

    ant.java.version:Ant检测到的JDK的版本,在上例运行结果中可看到为1.6

    例子:

    修改D:uild.xml文件

     

    命令行模式,进入D盘后运行ant example,结果如下:

     

     

    三、Ant的常用任务

    在Ant工具中每一个任务封装了具体要执行的功能,是Ant工具的基本执行单位。在本小节中,主要引导读者来看下Ant的常用任务及其使用举例。

    3.1 copy任务

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

    (1)复制单个文件:

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

    (2)对文件目录进行复制:

    <copy todir="../newdir/dest_dir">

        <fileset dir="src_dir"/>

    </copy>

    (3)将文件复制到另外的目录:

    <copy file="file.txt" todir="../other/dir"/>

    3.2 delete任务

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

    (1)删除某个文件:<delete file="photo/amigo.jpg"/>

    (2)删除某个目录:<delete dir="photo"/>

    (3)删除所有的备份目录或空目录:

    <delete includeEmptyDirs="true">

          <fileset dir="." includes="**/*.bak"/>

    </delete>

     

    3.3 mkdir任务

    创建目录:<mkdir dir="build"/>

    3.4 move任务

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

    (1)移动单个文件:

    <move file="fromfile" tofile=”tofile”/>

    (2)移动单个文件到另一个目录:

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

    (3)移动某个目录到另一个目录:

    <move todir="newdir">

     <fileset dir="olddir"/>

    </move>

    (4)echo任务

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

    <echo message="Hello,Amigo" file="logs/system.log" append="true">

    四、利用Ant构建和部署Java工程

    Ant可以代替使用javac、java和jar等命令来执行java操作,从而达到轻松的构建和部署Java工程的目的。下面来看几个知识点。

    4.1 利用Ant的javac任务来编译java程序

    (1)建立名为antstudy的Java工程, src目录为源代码目录,在src目录下建立HelloWorld.java这个类文件

    (2)在工程下新建build.xml文件

    在该文件中编译src目录下的java文件,并将编译后的class文件放入build/classes目录中

    build.xml中的内容如下:

     

     

    (3)在build.xml文档上点右键,Run As --- Ant Build ;

    运行该build.xml文件,可在工程中看到新增了build/classes目录,并在该目录中生成了编译后的HelloWorld.class文件。

    工程全部目录如下图所示:

    4.2 使用Ant的java任务运行Java程序

    Ant中可以使用java任务实现运行Java程序的功能。下面在上面的例子中进行如下的修改,修改后的build.xml文件的内容如下

     

    运行该build.xml文件,可在控制台看到HelloWorld的main方法的输出。

     

    4.3 使用Ant的jar任务生成jar文件

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

     

    此时将ant的project的default属性设置为jar,同时运行该build.xml文件,运行完毕后,可看到在工程目录下生成了一个jar包HelloWorld.jar,如下图所示:

     

    4.4 使用Ant的war任务打包J2EE Web项目

     

    建立一个J2EE Web工程,其目录结构如下图所示:

     

     

    把上面的HelloWorld.java复制过来即可;

    直接在工程下建立build.xml文件(工程名上点右键,新建xml文件),内容如下:

     

     

    WebContent下新建index.jsp,如下:

     

     

     

    在build.xml上点击右键Run As —— Ant Build,即可生成War包;

    运行该build文件,更新目录后,可看到在build目录下生成了antwebproject.war文件;

    可以将该war包拷贝到Tomcat的目录下看一下运行结果。

  • 相关阅读:
    poj 1328 Radar Installation (贪心)
    hdu 2037 今年暑假不AC (贪心)
    poj 2965 The Pilots Brothers' refrigerator (dfs)
    poj 1753 Flip Game (dfs)
    hdu 2838 Cow Sorting (树状数组)
    hdu 1058 Humble Numbers (DP)
    hdu 1069 Monkey and Banana (DP)
    hdu 1087 Super Jumping! Jumping! Jumping! (DP)
    必须知道的.NET FrameWork
    使用记事本+CSC编译程序
  • 原文地址:https://www.cnblogs.com/LiuYanYGZ/p/9628869.html
Copyright © 2011-2022 走看看