• 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来直接执行

  • 相关阅读:
    17. Letter Combinations of a Phone Number
    16. 3Sum Closest
    15. 3Sum
    14. Longest Common Prefix
    13. Roman to Integer
    12. Integer to Roman
    11. Container With Most Water
    10. Regular Expression Matching
    9. Palindrome Number
    8. String to Integer (atoi)
  • 原文地址:https://www.cnblogs.com/tianhao/p/4221963.html
Copyright © 2020-2023  润新知