zoukankan      html  css  js  c++  java
  • ant 关键字和关键语句

    学习ant推荐的两个blog

    http://www.cnblogs.com/huozhicheng/archive/2010/04/08/2533199.html
    http://www.cnblogs.com/cyjch/archive/2012/03/28/2420761.html

    http://ku-sunny.iteye.com/blog/966011

    http://www.cnblogs.com/clarkchen/archive/2011/03/10/1980194.html

    关键词
    project   为ant构建文件的根元素,ant构建文件至少要包括一个根元素(project元素)
    target   元素为ant的基本执行单元,可以包含一个或多个具体任务,多个target之间可以存在依赖关系,(若是与多个任务之间存在依赖关系时,需要以“,”间隔。)
    echo  根据日志或监控器的级别输出信息,如message,file,append和level四个属性
    default  默认要执行的target
    depends target之间的依赖关系 
    if 只要project中有那个属性就执行当前if所在的target
    unless 只要project中没有那个属性就执行当前unless所在的target
    destdir 目标目录
    basedir 工作的根目录  .为当前目录 即project所在的目录 
    srcdir  源程序的目录

    path  用来表示一个类路径

    ant的五个内置属性---可直接用el表达式提取到
    (1.basedir工作的根目录 project基目录的绝对路径  .代表当前目录
      2.ant.file 当前build.xml文件所在的局对路径如e:anttest/build.xml
      3.ant.java.version    ant检测到的jdk版本
      4.ant.version     ant的版本
      5.ant.project.name    当前制定的project的name
    )

    假如某个用户想要得到某个project下的所有target的名称   可以使用ant -projecthelp指令 


    property(name和value) project内的属性  写在target外project内

    ===============================================================================================================

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

    standalone 定义了外部定义的dtd文件的存在性

    encoding 源代码的文件编码

    =================================================================================================================

    src path 编译的源目录,可以通过这样编译在不同文件夹里的文件

    <target name="compile" depends="clean">        
    <mkdir dir="build/classes"/>     
    <javac srcdir="src" destdir="build/classes"/>     
    </target> 
    <!--通过srcdir指定要编译的文件目录,适合编译文件在同一个目录内-->
    
     <javac encoding="utf-8" destdir="../WebContent/WEB-INF/classes" fork="true" memorymaximumsize="500M" source="${source}" target="${target}>
                 <src path="../src"/>
                 <src path="../eventinfo"/>
                 <src path="../detectsetting"/>
                <classpath refid="ids7010-web-vcm.classpath"/>
     </javac><!--适合需要编译的文件不在同一个目录内-->
    

     refid  reference id 的缩写,引用前边声明过的对象(例如file path)的id

    fork:没有指定fork属性(默认为false),javac命令将和ant在同一个进程中执行,同时javac被分配的内存只有64MB,如果指定fork属性为true,javac命令将和ant不在同一个进程中执行,分配内存的大小将为memoryinitialsize、memorymaximumsize指定的大小。

    source:指定版本号使编译出的(文件)类兼容该版本

    target:根据指定的vm版本生成class文件

    一般jdk都向下兼容向上不兼容   source在这里指编译出向下兼容的版本的类
    如果用Eclipse,你可以在项目属性中编译选项里有设置生成兼容JDK1.4的类。但是如果你在Eclipse里自己写Ant脚本用<javac> 命令去编译java类,则生成的仍为JDK1.5的类(执行Ant脚本时与Eclipse设置的编译选项无关)。如何解决了,其实很简单,只要在<javac> ant 命令里加source参数。

    ===================================================================================

    antcall target     表示调用其它的ant执行项,target为要调用的ant执行项名称
    <antcall target="build"/>

    <target depends="clean,build-project" name="build"/> 
    <target description="compile project" name="build-compiler">
            <antcall target="build"/>
     </target>
    <!--调用其它的target-->
    

    <mkdir dir="所要创建目录的所在的地址/目录名"/>

     ======================================================================

    <copy file="所要复制的文件所在的地址/文件名" tofile="目标地址/文件名"/>
    如果是当前目录的话就不用在文件名前加地址了

    <copy file="所要复制的文件所在的地址/文件名" todir="目标地址"/>

    <copy todir="目标目录"〉
     〈fileset dir="被复制的目录"〉
    〈!--只复制内容 并不拷贝文件夹--〉
    </copy〉

    includeemptydirs   用于指定在复制时是否复制空目录   默认为true 复制
    <copy includeemptydirs="false" todir="../WebContent/WEB-INF/classes">
                <fileset dir="../eventinfo" excludes="**/*.launch, **/*.java"/>
    </copy>
    这样即不复制空目录

     ========================================================================

    <move file="所要移动的文件所在的地址/文件名" tofile="目标地址/文件名"/>

    如果是当前目录的话就不用在文件名前加地址了

    <move file="所要移动的文件所在的地址/文件名" todir="目标地址"/>

    <move todir="目标目录">
     <fileset dir="被移动的目录">
    </move>
    <!--移动过后删除被移动的文件夹-->

    ==========================================================================
    <delete file="所要删除的文件所在的地址/文件名">

    <delete dir="所要删除的文件所在的地址/目录名">

    ==========================================================================

    <javac srcdir="要编译的java所在目录" destdir="存放编译好的class文件所在的目录">
    
    <java classname="helloworld" classpath="class文件所在的目录">
    
     <path>
    
      <pathelement location="../WebContent/WEB-INF/lib/jxl.jar"/>
    
    <!-- 具体指定到文件 -->
    
    </path>
    
     <path>
    
      <pathelement path="../WebContent/WEB-INF/lib"/>
    
    <!-- 具体指定到目录 -->
    
    </path>
    

      

     在projectA中执行projectB的构件文件。projectA的构件文件内容如下

    <?xml version="1.0"?> 
    <!-- 在projectA中执行projectB的构件文件   --> 
    <project name="porjectA" default="callProjectB"> 
        <target name="callProjectB"> 
            <echo message="In projectA calling projectB"/> 
            <ant antfile="subfile/projectB.xml" inheritAll="false" /> 
    </target> 
    </project> 
    

    inheritAll 在Ant任务中inheritAll属性用于指定被调用的构件文件的project元素中可使用当前project元素中的属性。 
    这个属性类似于Java程序中类的继承关系。默认时inheritAll属性取值为true

    false的话    子类就无法调用父类的属性   即projectB中的target就无法调用projectA的属性

    ant -h   显示具体的命令行展示代码

    exec  可以调用系统命令

     ============================================================================

    1.Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能

    3.ant -projecthelp 可以得到project下所有的target的名称

    5.复制目录或移动目录
    都是将目录中的资源移动到目标目录中去

    jar包可直接运行   java -jar x.jar来直接执行

  • 相关阅读:
    验证码生成程序
    会话技术Cookie&Session
    jsp基础、el技术、jstl标签、javaEE的开发模式
    js原生的Ajax
    java基础-反射
    hibernate 联合主键 composite-id
    在ubuntu18 安装nginx过程,以及遇到的错误!
    报错解决:error: this statement may fall through [-Werror=implicit-fallthrough=]
    nginx.conf中关于nginx-rtmp-module配置指令详解
    搭建Nginx+nginx-rtmp-module的hls流媒体服务器并用OBS进行推流
  • 原文地址:https://www.cnblogs.com/tianhao/p/4221963.html
Copyright © 2011-2022 走看看