Eclipse中Ant的使用

1.查看eclipse中ant插件的版本
进入eclipse安装目录的plugins文件夹下,可以看到对应ant插件的版本(不止ant,其他的插件的版本也同样可以看到):
这里写图片描述

2.demo-TestTomcat(就利用之前的testTomcat项目搞)
在根目录下新建build.xml(名字可以改,但是一般都是这个),之后的目录为:
这里写图片描述
build.xml右键Run as Ant Build,运行之后如下图:
这里写图片描述

3.build.xml的示例
下边就是一个完整的build.xml,然后我们来详细的解释每一句:

<?xml version="1.0" encoding="UTF-8" ?>
<project name="TestTomcat" default="run" basedir=".">
<property name="src" value="src"/>
<property name="dest" value="classes"/>
<property name="testAnt_jar" value="testAnt.jar"/>
<target name="init">
   <mkdir dir="${dest}"/>
</target>
<target name="compile" depends="init">
   <javac srcdir="${src}" destdir="${dest}"/>
</target>
<target name="build" depends="compile">
   <jar jarfile="${testAnt_jar}" basedir="${dest}"/>
</target>
<target name="run" depends="build">
   <java classname="com.zd.ant.TestAnt" classpath="${testAnt_jar}"/>
</target>
<target name="clean">
   <delete dir="${dest}" />
   <delete file="${testAnt_jar}" />
</target>
<target name="rerun" depends="clean,run">
   <ant target="clean" />
   <ant target="run" />
</target>
</project>

解释:

<?xml version="1.0" encoding="UTF-8" ?> 

build.xml中的第一句话,没有实际的意义;

<project name="TestTomcat" default="run" basedir=".">
</project>

ant的所有内容必须包含在这个里边,name是你给它取的名字,basedir故名思意就是工作的根目录 .代表当前目录。default代表默认要做的事情。

<property name="src" value="src"/>

类似程序中的变量,name为src,值为src,表示src目录:

<target name="compile" depends="init">
    <javac srcdir="${src}" destdir="${dest}"/>
</target>

把你想做的每一件事情写成一个target ,它有一个名字,depends是它所依赖的target,在执行这个target 例如这里的compile之前ant会先检查init是否曾经被执行过,如果执行过则直接直接执行compile,如果没有则会先执行它依赖的target例如这里的init,然后在执行这个target :
编译:

<target name="compile" depends="init">
    <javac srcdir="${src}" destdir="${dest}"/>
</target>

做jar包:

<target name="build" depends="compile">
    <jar jarfile="${testAnt_jar}" basedir="${dest}"/>
</target>

运行:

<target name="run" depends="build">
    <java classname="com.zd.ant.TestAnt" classpath="${testAnt_jar}"/>
</target>

为了不用拷贝,我们可以在最开始定义好目标文件夹,这样ant直接把结果就放在目标文件夹中;
新建文件夹:

<target name="init"> 
    <mkdir dir="${dest}"/>
</target>

为了更多一点的功能体现,又加入了两个target
删除生成的文件:

<target name="clean">
    <delete dir="${dest}" />
    <delete file="${ testAnt_jar }" />
</target>

再次运行,这里显示了如何在一个target里边调用其他的target;

<target name="rerun" depends="clean,run">
    <ant target="clean" />
    <ant target="run" />
</target>

4.更多信息-标签
1.project
每个构建文件都有一个project标签,有以下属性:
- default:表示默认的运行目标,这个属性是必须的。
- basedir:表示项目的基准目录。
- name:表示项目名。
- description:表示项目的描述。
2.target
任务,一个project标签下有一个或多个target标签,代表任务,任务间可以存在依赖关系。有如下属性:
- name:用于标识,这个是必须的
- depends:用来指定所依赖的任务。

<!-- 初始化任务 -->  
<target name="init">  
    <echo message="  init ${init}   ..."/>    
</target>  

<!-- 编译 -->  
<target name="compile" depends="init">  
    <delete dir="${classes.dir}" />  
    <mkdir dir="${classes.dir}" />  
    <javac srcdir="${src.dir}" destdir="${classes.dir}">  
        <classpath refid="master-classpath" />  
    </javac>  
</target> 

3.delete
删除文件或文件目录,有如下属性
- file:删除文件
- dir:删除目录
- includeEmptyDirs:值得是否删除空目录,默认是true
- failonerror:报错是否停止,默认是true
- verbose:是否列出删除的文件,默认是false

<!--clean other dir-->
    <target name="clean_other_dir">
        <echo message="begin clean_other_dir..."/>
        <delete dir="${basedir}/${compress.dir}"/>
        <delete dir="${basedir}/pub"/>
        <echo message="begin clean html module-xx..."/>
        <delete includeemptydirs="true">
            <fileset dir="${basedir}/src/html" >
                <include name="**/module-*/**"/>
            </fileset>
        </delete>
        <echo message="begin clean res/module-xx、component-xx、res-base..."/>
        <delete includeemptydirs="true">
            <fileset dir="${basedir}/res" >
                <include name="module-*/**"/>
                <include name="component-*/**"/>
                <include name="res-base/**"/>
            </fileset>
        </delete>
    </target>

4.copy
拷贝文件或文件目录,属性如下:
- file:表示源文件。
- tofile:表示目标文件。
- todir:表示目标目录。
- overwrite:是否覆盖目标文件,默认为false。
- includeEmptyDirs:是否拷贝空目录,默认为true。
- failonerror:如目标没有发现是否自动停止,默认值true。
- verbose:是否显示详细信息,默认值false。

<target name="cp">
    <copy todir="${compress.dir}" overwrite="true">
         <fileset dir="${ob_baseline.dir}">
            <include name="pub/" />
            <include name="res/" />
            <include name="mail_template/" />
         </fileset>
    </copy>
</target>

5.import
引入别的xml文件,提高复用性:

<import file="./env-judge.xml"/>
<import file="./tasks.xml"/>

6.类似于常量,可以供给build.xml中的其他标签使用。有两个特点:
- 大小写敏感
- 不可改变,谁先设定,之后的都不能改变。
该标签可以与多个属性配合使用。
- name和value:

<property name="module_name" value="admin"/> 

后面直接使用即可:

<echo message="begin nej-build ${module_name}..."/> 
  • name和refid:
<property name="srcpath" refid="dao.compile.classpath"/> 

其中的dao.compile.classpath在别的地方进行了定义。当然,也可以通过直接引用的方式:

<property name="baseline.dir" value="${ob_baseline.dir}"/> 
  • name和location:
<property name="srcdir" location="src"/> 

将srcdir的值设置为当前文件路径/src。
- file:

<property file="./omad/build.properties"/> 

导入相对文件中的所有变量,这里的build.properties专门用来存放各种变量;
•environment:

<property environment="env"/> 

设置系统的环境变量前缀为env。比如

<property name="tomcat.home" value="${env.CATALINA_HOME}"/> 

将系统的tomcat安装目录设置到tomcat.home属性中。
(更多信息可以参考:
https://wenku.baidu.com/view/695488d676eeaeaad1f330ab.html?from=search)

posted @ 2018-02-12 17:19  XueXueLai  阅读(291)  评论(0编辑  收藏  举报