• Ant 之property 总结


    原文:

    http://chen592969029.iteye.com/blog/946056

    特点

     大小写敏感;

     不可改变,先到先得,谁先设定,之后的都不能改变。

    怎样设置

    1 、设置 name 和 value 属性值,比如: <property name="srcdir" value="${basedir}/src"/>

    2 、 设置 name 和 refid 属性值,比如: <property name="srcpath" refid="dao.compile.classpath"/> ,其中dao.compile.classpath 在别的地方定义。

    3 、设置 name 和 location 属性值,比如: <property name="srcdir" location="src"/> ,即将 srcdir 的值设     置为:当前项目根目录的 /src 目录。

    4 、设置 file 属性值,比如: <property file="build.properties"/> , 导入 build.properties 属性文件中的属性值

    5 、设置 resource 属性值,比如: <propety resource="build.properties"/>, 导入 build.properties 属性文件中的属性值

    6 、设置 url 属性值,比如: <property url="http://www.blogjava.net/wiflish/build.properties"/>, 导入http://www.blogjava.net/wiflish/build.properties 属性文件中的属性值。

    7 、设置环境变量,比如: <property environment="env"/> ,设置系统的环境变量为前缀 env.

         <property name="tomcat.home" value="${env.CATALINA_HOME}"/> 将系统的 tomcat 安装目录设置到     tomcat.home 属性中。

    内置属性

    Ant’s built-in properties:

    basedir

    The absolute path of the project’s basedir.

    ant.file

    The absolute path of the buildfile.

    ant.version

    The version of Ant.

    ant.project.name

    The name of the project that is currently executing.

    ant.project.default-target

    The name of the currently executing project’s default target.

    ant.project.invoked-targets

    A comma separated list of the targets that have been specified on the command line when invoking the current.

    ant.java.version

    The JVM version Ant detected.

    ant.core.lib

    The absolute path of the ant.jar file.

    System properties  

    java.version

    Java Runtime Environment version

    java.vendor

    Java Runtime Environment vendor

    java.vendor.url

    Java vendor URL

    java.home

    Java installation directory

    java.vm.specification.version

    Java Virtual Machine specification version

    java.vm.specification.vendor

    Java Virtual Machine specification vendor

    java.vm.specification.name

    Java Virtual Machine specification name

    java.vm.version

    Java Virtual Machine implementation version

    java.vm.vendor

    Java Virtual Machine implementation vendor

    java.vm.name

    Java Virtual Machine implementation name

    java.specification.version

    Java Runtime Environment specification version

    java.specification.vendor

    Java Runtime Environment specification vendor

    java.specification.name

    Java Runtime Environment specification name

    java.class.version

    Java class format version number

    java.class.path        

    Java class path

    java.library.path

    List of paths to search when loading libraries

    java.io.tmpdir

    Default temp file path

    java.compiler

    Name of JIT compiler to use

    java.ext.dirs

    Path of extension directory or directories

    os.name

    Operating system name

    os.arch

    Operating system architecture

    os.version

    Operating system version

    file.separator

    File separator ("/" on UNIX)

    path.separator

    Path separator (":" on UNIX)

    line.separator

    Line separator ("\n" on UNIX)

    user.name

    User's account name

    user.home

    User's home directory

    user.dir

    User's current working directory

    用法

    ${key_name},如:${os.name},它将得到当前操作系统的名称。

    需注意

    1. 内置属性basedir

     -- 不需要定义就可以直接使用,${basedir},得到当前工程的绝对路径

     -- 当在<project>标签的basedir属性中指定basedir时,之后工程中出现的所有相对路径都是相对于这个basedir所指向的路径,且${basedir}的值也将变为<project>标签中的basedir属性所指定的值。

    2. property的不变性在使用<available><ant><antcall>时会被打破

    3. 可以在命令行通过-DpropertyName=propertyValue的方式指定property,注意,-D于propertyName之间没有空格,使用这种方式指定的属性最先被赋值,它是在执行build文件之前就已经赋值了的。

    Q&A

    How can I do something like  <property name="prop" value="${${anotherprop}}"/>   (double expanding the property)?

    Without any external help you can not.

    With <script/>, which needs external libraries, you can do

    Xml代码  
    1. <script language="javascript">  
    2.     propname = project.getProperty("anotherprop");  
    3.     project.setNewProperty("prop", propname);  
    4. </script>  

    With AntContrib (external task library) you can do <propertycopy name="prop" from="${anotherprop}"/> .

    With Ant 1.6 you can simulate the AntContribs <propertycopy> and avoid the need of an external library:

    Xml代码  
    1. <macrodef name="propertycopy">  
    2.   <attribute name="name"/>  
    3.   <attribute name="from"/>  
    4.   <sequential>  
    5.     <property name="@{name}" value="${@{from}}"/>  
    6.   </sequential>  
    7. </macrodef>   

    With the 'props' antlib (external, but also from Ant) you could do the dereferencing with  ${${anotherprop}   - not just in the property task - instead everywhere in your buildfile (after registering the required property helper).

    Xml代码  
    1. <propertyhelper>  
    2.   <props:nested />  
    3. </propertyhelper>  
    4. <property name="foo" value="foo.value" />  
    5. <property name="var" value="foo" />  
    6. <echo> ${${var}} = foo.value </echo>   

    With  Flaka   (external Ant Plugin) you could do the dereferencing with  #{${anotherprop}}   - not just in flaka tasks, but all tasks after installing flaka's property handler.

    Xml代码  
    1. <project xmlns:fl="antlib:it.haefelinger.flaka">  
    2.   <fl:install-property-handler/>  
    3.   <property name="foo" value="foo.value"/>  
    4.   <property name="var" value="foo" />  
    5.   <property name="buildtype" value="test"/>  
    6.   <property name="appserv_test" value="//testserver"/>  
    7.   <echo>  
    8.     #{${var}} = foo.value  
    9.     <!-- nested property -->  
    10.     #{appserv_${buildtype}}  
    11.   </echo>  
    12. </project>  
  • 相关阅读:
    POJ2945 Find the Clones trie树
    BZOJ 3796 Mushroom追妹纸 哈希+二分(+KMP)
    java-web的mybatis的学习
    关于字符串split一些用法
    hive 中简单的udf函数编写
    hive 用户行为分析(活跃。启动,留存,回访,新增)的一些经典sql
    浏览收藏夹 看到了hadoop3.0 的改动
    pythonDay01
    关于java 操作linux命令的 一些相关
    需求中碰到的简单Map集合 key相同合并 value的思路
  • 原文地址:https://www.cnblogs.com/gzhu/p/3080026.html
Copyright © 2020-2023  润新知