码迷,mamicode.com
首页 > 其他好文 > 详细

ant入门

时间:2014-12-12 01:20:10      阅读:381      评论:0      收藏:0      [点我收藏+]

标签:des   style   io   ar   color   os   使用   sp   java   

一、ANT的安装配置
二、ANT的基础元素
三、ANT常用命令
四、eclipse中使用ANT
五、利用ant构建和部署Java项目

一、Ant的配置
1. 下载安装Ant,且设置
ANT_HOME=E:\resource\apache\ant\apache-ant-1.9.4  (ant根目录)
path=%ANT_HOME%\bin
 
2. 最后验证是否安装成功在cmd中输入ant -version,如果显示出版本信息,则安装成功。
 
二、Ant的基础元素
1. Project元素
     Project元素是Ant文件的根元素,Ant构建文件中至少应该包含一个project元素,否则会发生错误。在每个project元素下面可以包含多个target元素。project的属性包括:
     1). name:项目名称
     2). default:当调用时没有指定target时,此project的默认target
     3). basedir:用于指定基路径的位置,改属性没有指定时,使用Ant的构建文件的父目录作为基路径
 
例如:
<?xml version="1.0" ?>
<project name="antPro" default="getBaseDir" basedir="D:/temp">
    <target name="getBaseDir" >
        <echo message="The base dir is: ${basedir}" />
    </target>
</project>
 
     从上例可以看出,在这里定义了default属性的值为getBaseDir ,即当运行ant命令时,如果没有指明待执行的target,则将执行默认的target--getBaseDir 。此外,还定义了basedir属性的值为 "D:/temp" ,进入"D:/temp" 后运行ant 命令,得一下结果:
Buildfile: D:\temp\build.xml
 
getBaseDir:
     [echo] The base dir is: D:\temp
 
BUILD SUCCESSFUL
Total time: 1 second
 
2. target元素
     target为Ant的基本执行单元,他可以包含一个或多个具体的任务。多个target 可以存在相互依赖关系。 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 功能的简短描述和说明。
 
3. property元素
     property元素可看作变量或者参数的定义(即经常使用的变量),project 的属性可以通过 property 元素来设定,也可在 Ant之外设定。
     例如
    <property name="name" value= "hello" />。name是变量的名称 value是变量的值,要用某个变量时使用${name}方式调用。
     若要在外部引入某文件,例如 build.properties 文件,可以通过如下内容将其引入
     <property file="build.properties" />
 
4. Ant 提供了一些内置的属性
     可以得到的系统属性的列表与 Java 文档中 System.getPropertis() 方法得到的属性一致,这些系统属性可参考 sun 网站的说明。同时, Ant 还提供了一些它自己的内置属性,如下:
     basedir:project 基目录的绝对路径;
     ant.file:buildfile的绝对路径,上例中ant.file值为D:\temp\build.xml;
ant.version:Ant 的版本信息,本文为1.8.1 ;
     ant.project.name:当前指定的project的名字,即前文说到的project的name属性值;
     ant.java.version:Ant 检测到的JDK版本,本文为 1.6 。
 
三、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="../test/source" />
 
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="/WEB-INF/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" />
 
四、eclipse中使用ant
1. 运行环境
     eclipse已预装ant插件, 设置eclipse的ant插件的运行环境
Preferences -> Ant -> Runtime -> Classpath -> Ant Home 选择Ant解压后的文件夹。
2. Ant view
     打开Ant的view窗口
Window -> show view -> other -> Ant
3. 使用Ant view
     将Ant的xml文件,如build.xml鼠标拖动到Ant的view窗口中,可以看到project和target的名字。鼠标双击需要执行的target或project,即可执行。或可以使用鼠标右键Run As --> Ant Build。
 
五、利用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文件,在该文件中编译src 目录下的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>
     在项目根目录(D:\temp\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="com.chencye.HelloWorld" >
            <classpath>
                <pathelement path="${basedir}/build/classes" />
            </classpath>
        </java>
    </target>
</project>
在build.xml目录中cmd运行ant。接着,就可以在控制台看见输出:"[java] hello world!"。
 
3. 使用jar命令生成jar文件
     还可以在上例的基础上更进一步,来生成jar包,可在run 这个 target 下再加上如下 target :
<?xml version="1.0" encoding="UTF-8" ?>
<project name= "helloWorld" default="run" basedir= ".">
    <property name="src" value= "src" />
    <property name="dest" value= "build/classes" />
    <property name="lib" value= "lib" />
    <property name="hello_jar" value= "JavaTestPro.jar" />
    <!--删除-->
    <target name="clean" >
        <delete dir="${lib}" />
        <delete dir="${dest}" />
        <!-- 是dir 删除目录 ,不是file 删除文件-->
    </target>
    <!--初始化 之前执行删除操作-->
    <target name="init" depends= "clean">
        <mkdir dir="${dest}" />
    </target>
    <!--编译生成class文件 -->
    <target name="compile" depends= "init">
        <javac srcdir="${src}" destdir= "${dest}" />
    </target>
    <!--将编译后的class文件打包-->
    <target name="build" depends= "compile">
        <mkdir dir="${lib}" />
        <jar jarfile="${lib}/${hello_jar}" basedir= "${dest}" />
    </target>
    <target name="run" depends= "build">
        <java classname="com.chencye.HelloWorld" classpath="${lib}/${hello_jar}" />
    </target>
</project>
其中,project的default 属性设置为应设为jar,ant运行完毕后,可看到在项目的根目录下生成了一个 helloworld.jar的jar包 。可通过运行以下命令来执行该jar包:
     java -jar JavaTestPro.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 信息。
     接下来编写 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>
在D:\temp\WebTest目录下运行ant后,就生成了WebTest.war文件了,然后可以将其放入Web容器(如Tomcat)的相应目录下(${Tomcata安装目录}\webapps)运行该web项目了。

ant入门

标签:des   style   io   ar   color   os   使用   sp   java   

原文地址:http://www.cnblogs.com/chencye/p/4158852.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!