• ant的特性


    1)ant的内建特性
    ant有一些内建的特性如:
    ant.file-->构建文件如build.xml文件所在的路径
    ant.home->ant的根路径
    ant.java.version->java版本
    ant.project.name->当前project的名字,在build.xml的开头指定
    ant.version->ant版本
    basedir->project的根路径,在build.xml的开头指定
    <target name="echo">
    <echo message="ant.file = ${ant.file}"/>
    <echo message="ant.home = ${ant.home}"/> 
    <echo message="ant.java.version = ${ant.java.version}"/> 
    <echo message="ant.project.name = ${ant.project.name}"/> 
    <echo message="ant.version = ${ant.version}"/> 
    <echo message="basedir = ${basedir}"/> 
    </target>
    所有jvm系统的特性都隐式的成为ant特性,并允许用户对一些重要信息诸如用户的主目录以及用户名称等进行修改。
    例如:
    <echo message="user.name = ${user.name}"/> 
    <echo message="user.home = ${user.home}"/> 
    <echo message="java.home = ${java.home}"/>  
    将得到:
          [echo] user.name = lcheng
         [echo] user.home = C:\Documents and Settings\lcheng
         [echo] java.home = C:\Program Files\Java\jdk1.5.0_08\jre
    2)用户自己设置特性
    最常用的自定义特性有几种:
    (1)name/value特性
       其格式为<property name="..." value="..."/>
       引用相对路径的特性最好使用location变量设置,如:
       <property name="builddir" location=${build.dir} />
       (2)从文件中载入特性集
    假设我们已经有一个文件名为build.properties, 内容如下:
    name=Allen
    user=admin
    password=qqqqq

    我们在 Ant 的 build.xml 构建文件中直接调用并使用它们。
    <?xml version="1.0" encoding="UTF-8"?>
    <project name="testCondition" default="test">
    <property file="build.properties"/>
        <target name="test">
            <echo message="name = ${name}"/>
            <echo message="user = ${user}"/> 
            <echo message="password = ${password}"/> 
        </target>
    </project>

    运行,结果如下:

    C:\testant>ant -f build1.xml
    Buildfile: C:\testant\build1.xml

    test:
         [echo] name = Allen
         [echo] user = admin
         [echo] password = qqqqq

    BUILD SUCCESSFUL
    Total time: 0 seconds

     
    (3)载入环境变量
          另一个重要的property变量允许将环境变量作为特性。需要加入类似于下面这句话
    <property environment="env" />
    env表示环境变量的前缀,这个可以自己设置值。
         那么在引用环境变量的时候输入${env.Path} ${env.CLASSPATH},注意环境变量是大小写敏感的。
     
    <?xml version="1.0" encoding="UTF-8"?>
    <project name="testCondition" default="test">
    <property environment="env" />
        <target name="test">
            <echo message="env.Path = ${env.Path}"/>
            <echo message="env.JAVA_HOME = ${env.JAVA_HOME}"/> 
        </target>
    </project>

    结果:

    C:\testant>ant -f build1.xml
    Buildfile: C:\testant\build1.xml

    test:
         [echo] env.Path = C:\Program Files (x86)\Common Files\NetSarang; C:\Program Files (x86)\Common Files\Microsoft Shared\Windows;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program File;C:\Program Files\Java\jdk1.6.0_21\bin;C:\Program Files (x86)\Windows

        [echo] env.JAVA_HOME = C:\Program Files\Java\jdk1.6.0_21

    BUILD SUCCESSFUL
    Total time: 0 seconds

     
    (4)从xml文件中载入特性。
         其格式为<xmlproperty file="${customer}.xml"/>
        例如web.xml文件的内容如下:
       
    <?xml version="1.0"?>
    <customer name="zhangsan">
        <sex>female</sex>
        <age>27</age>
    </customer>
        build.xml 如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <project name="testCondition">
        <property environment="env"/>
        <target name="test">
            <xmlproperty file="${customer}.xml" collapseAttributes="true"/>
            <echo message="${customer.name},${customer.sex},${customer.age}"/>
        </target>
    </project>
       运行 ant test -Dcustomer=web
       得到的结果则是:zhangsan,female,27
       
    C:\testant>ant -f build1.xml -Dcustomer=web
    Buildfile: C:\testant\build1.xml

    test:
         [echo] zhangsan,female,27

    BUILD SUCCESSFUL
    Total time: 0 seconds
    如果 web.xml 改为:
    <?xml version="1.0"?>
    <customer name="zhangsan">
        <sex>female</sex>
        <age>27</age>
        <sex>male</sex>
        <age>32</age>
    </customer>

    则结果变为

    C:\testant>ant -f build1.xml test -Dcustomer=web
    Buildfile: C:\testant\build1.xml

    test:
         [echo] zhangsan,female,male,27,32

    BUILD SUCCESSFUL
    Total time: 0 seconds

    我们把 web.xml 再次改为
    <?xml version="1.0"?>
    <customers>
        <customer name="zhangsan">
            <sex>female</sex>
            <age>27</age>
        </customer>
        <customer name="lisi">
            <sex>male</sex>
            <age>32</age>
        </customer>
    </customers>

    build1.xml 改为

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="testCondition">
        <property environment="env"/>
        <target name="test">
            <xmlproperty file="${customer}.xml" collapseAttributes="true"/>
            <echo message="${customers.customer.name}, ${customers.customer.sex}, ${customers.customer.age}"/>
        </target>
    </project>

    运行:

      ant -f build1.xml test -Dcustomer=web

    结果:

    C:\testant>ant -f build1.xml test -Dcustomer=web
    Buildfile: C:\testant\build1.xml

    test:
         [echo] zhangsan,lisi, female,male, 27,32

    BUILD SUCCESSFUL
    Total time: 0 seconds

     
       也可以通过import的方法来输入xml文件,此时xml文件的内容就像宏定义一样被嵌入。被import的xml文件必须是一个构建文件,以构建文件的格式书写。
     
    注意:特性值一旦设定,则无论在构建文件中还是在命令行里都不能修改它的值。最先设值者设值时就固定了它的值。
    例如下面这段代码
       在文件build.properties中有这样一句话
       build.debug=off
       在构建文件中
       <property file="build.properties"/>
       <property name="build.debug" value="on"/>
       <echo message="build.debug = ${build.debug}" />
       其输出的结果是build.debug = off。
       这是因为特性build.debug首先在build.properties中设定了。
       我们也可以通过在命令行中首先输入一些特性来设定特性值,这样将会覆盖构建文件中所设定的特性值。
  • 相关阅读:
    shell脚本模拟交互操作实现上传文件至sftp
    从文件A中去除掉文件B的内容
    Linux批量kill某个程序的进程
    单数据盘或者很多数据盘mount挂载到某个目录
    用户HTTP请求过程简单剖析
    linux服务器系统盘坏且系统盘为软raid的修复方法
    linux系统运行状态检查
    TCP的三次握手和四次挥手
    ES6嵌套对象的解构
    DRF框架在嵌套关系下实现嵌套对象字段的过滤
  • 原文地址:https://www.cnblogs.com/backpacker/p/2846893.html
Copyright © 2020-2023  润新知