ant之property關鍵字

property特性設置有六種方式apache

一、直接賦值name,value直接賦值,賦值格式k/v,鍵值對的方式,看以下操做vim

<property name="name2.1" value="property"/>網絡

事例:dom

[huang@aliyun_test test]$ vim property.xml ide

<project name="echo" default="A">ui

 <property name="name2.1" value="property"/>url

 <target name="A">xml

  <echo message="${name2.1}"/>作用域

 </target>get

</project>

運行結果以下:

[root@aliyun_test apache-ant-1.9.7]# bin/ant A -f /home/huang/test/property.xml 

Buildfile: /home/huang/test/property.xml

A:

     [echo] property       

BUILD SUCCESSFUL

Total time: 0 second


二、由文件路徑相關設置特性

[huang@aliyun_test test]$ vim property.xml

<project name="echo" default="A">

 <property name="name2.1" location="example.xml" relative="true" basedir="/home/huang/test"/>

 <target name="A">

  <echo message="${name2.1}"/>

 </target>

</project>

運行結果以下:

[root@aliyun_test apache-ant-1.9.7]# bin/ant A -f /home/huang/test/property.xml   

Buildfile: /home/huang/test/property.xml

A:

     [echo] example.xml

BUILD SUCCESSFUL

Total time: 0 seconds


三、直接導入的文件內容格式

建立一個文件以鍵值對的形式存入數據,以下

[huang@aliyun_test test]$ cat file.property 

domain_home=/home/huang/test

xingming=xiaobai

而後建立xml文件

[huang@aliyun_test test]$ cat property.xml 

<project name="echo" default="A">

 <property file="/home/huang/test/file.property"/>

 <target name="A">

  <echo message="${xingming}"/>

 </target>

</project>

而後ant運行以下結果:

[huang@aliyun_test apache-ant-1.9.7]$ bin/ant -f /home/huang/test/property.xml 

Buildfile: /home/huang/test/property.xml

A:

     [echo] xiaobai        這裏顯示的就是定義文件的property

BUILD SUCCESSFUL

Total time: 0 seconds


四、從jar中導入特性配置文件,此方法是調用系統環境變量

<property environment="env"/>  

<echo message="${env.OS}"/>

建立xml文件以下

[huang@aliyun_test test]$ vim property.xml 

<project name="echo" default="A">

 <property environment="env"/>

 <target name="A">

  <echo message="${env.USER}"/>     由echo $USER瞭解到此時用戶爲huang

 </target>

</project>

執行結果以下:

[huang@aliyun_test apache-ant-1.9.7]$ bin/ant -f /home/huang/test/property.xml 

Buildfile: /home/huang/test/property.xml

A:

     [echo] huang         打印出當前系統的登陸用戶,這是系統環境變量

BUILD SUCCESSFUL

Total time: 0 seconds


五、從網絡文件中讀取

<property url="http://www.baiud.com/file.property"/>

特性支持直接從網絡文件中導入。網絡文件的格式要求與從本地文件中導入讀取的要求相同

文件內容亦都是以<K,V>形式存在,對字符集亦有一樣要求。設置特性中」url」指定網絡文件連接便可。


六、獲取主機名,命令方式獲取

<exec executable="hostname" outputproperty="name5.host.name"  

 errorproperty=」name5.error」/>  

<echo message="${name5.host.name}"/>

經過exec任務執行本地命令」hostname」來獲取設置的主機名,並將該命令正常運行的輸出結果,即本設置的主機名,

將會賦值到特性」name5.host.name」中去,若是找不到該本地命令或者命令執行過程當中出錯,則會將出錯內容提法賦值到」name5.error」中去。

建立xml文件以下:

[huang@aliyun_test test]$ vim property.xml 

<project name="echo" default="A">

 <exec executable="hostname" outputproperty="name.a" errorproperty="name.b"/>    此時特性property再也不定義

 <target name="A">

  <echo message="${name.a}"/>

 </target>

</project>

運行結果以下:

[huang@aliyun_test apache-ant-1.9.7]$ bin/ant -f /home/huang/test/property.xml 

Buildfile: /home/huang/test/property.xml

A:

     [echo] aliyun_test

BUILD SUCCESSFUL

Total time: 0 seconds

綜合一個xml事例:

[huang@aliyun_test test]$ vim example.xml 

<project name="example" default="A">

 <property name="xingming" value="xiaobai"/>

 <property file="/home/huang/test/file.property"/>

 <property environment="env"/>

 <exec executable="getenforce" outputproperty="name" errorproperty="error"/>

 <target name="A">

  <echo message="${xingming}" />

  <echo message="${domain_home}"/>

  <echo message="${env.USER}"/>

  <echo message="${name}"/>

 </target>

</project>

運行以下:

[huang@aliyun_test apache-ant-1.9.7]$ bin/ant -f /home/huang/test/example.xml 

Buildfile: /home/huang/test/example.xml


A:

     [echo] xiaobai

     [echo] /home/huang/test

     [echo] huang

     [echo] Disabled


BUILD SUCCESSFUL

Total time: 0 seconds


######關於property特性還有如下內容

特性(property)在聲明被賦值以後,其值是不可變的,在整個編譯文件中將視爲常量而非變量。

<property name="color" value="blue"/>  

<property name="color" value="red"/>  

<!--特性的不可變性,此處將打印出"color"的第一次賦值"blue"-->  

<echo message="${color}"/> 

事例:

[huang@aliyun_test test]$ vim property.xml 

<project name="echo" default="A">

 <property name="color" value="red"/>

 <property name="color" value="bule"/>

 <target name="A">

  <echo message="${color}"/>

 </target>

</project>

運行結果以下:

[huang@aliyun_test apache-ant-1.9.7]$ bin/ant -f /home/huang/test/property.xml 

Buildfile: /home/huang/test/property.xml

A:

     [echo] red         這裏顯示的是第一次聲明,再也不是後面的聲明替代

BUILD SUCCESSFUL

Total time: 0 seconds


###特性的做用域,特性能夠做用在全局環境中,也能夠做用在局部

在工程級元素(project level,即<project>元素內的XML級)的第一級特性(property)具備做用域是全局的,在構建文件中一直都有效

在目標(target)標籤下聲明的特性在當前目標target內有效,而且其做用域延續到以後運行的其它目標(target)內。

事例:

[huang@aliyun_test test]$ cat property.xml

<project name="echo" default="A">

 <property name="color" value="red"/>     此爲全局變量color

 <target name="A">

  <property name="color" value="bule"/>   這裏爲局部變量color

  <echo message="${color}"/>

 </target>

 <target name ="B">

  <echo message="${color}"/>

 </target>

</project>

運行結果以下:

[huang@aliyun_test apache-ant-1.9.7]$ bin/ant A B -f /home/huang/test/property.xml 

Buildfile: /home/huang/test/property.xml

A:

     [echo] red

B:

     [echo] red

BUILD SUCCESSFUL

Total time: 0 seconds


target目標裏面定義的property也能夠做用在其餘target中,看事例

[huang@aliyun_test test]$ cat property.xml 

<project name="echo" default="A">

 <property name="color" value="red"/>       定義的全局變量color--》red

 <target name="A">

  <property name="a.color" value="bule"/>     在target A中定義的property的a.color

  <echo message="${color}"/>

 </target>

 <target name ="B">

  <echo message="${a.color}"/>            可否做用在target B中?

 </target>

</project>

運行結果以下:

[huang@aliyun_test apache-ant-1.9.7]$ bin/ant A B -f /home/huang/test/property.xml 

Buildfile: /home/huang/test/property.xml

A:

     [echo] red

B:

     [echo] bule                 這裏顯示的也是target A定義的property的值

BUILD SUCCESSFUL

Total time: 0 seconds

相關文章
相關標籤/搜索