• 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)

  • 相关阅读:
    手机也需“绿色环保”,省电类APP或将成为“标配”?
    Netty入门实例及分析
    ios开发经常使用RGB色值
    poj Kaka&#39;s Matrix Travels
    C++ 继承体系中的名称覆盖
    spring-framework-3.2.4与hibernate-release-4.3.5下使用HibernateDaoSupport抛出异常
    Codeforces Round #131 Div1 B
    URAL 1837. Isenbaev&#39;s Number (map + Dijkstra || BFS)
    数据库升级代码学习
    delphi:临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别
  • 原文地址:https://www.cnblogs.com/DiZhang/p/12545082.html
Copyright © 2020-2023  润新知