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