正如其他人已經提到,不建議改變標準螞蟻屬性的值。
一旦設置的屬性一旦設置是不可改變的,並有充分的理由。
重寫屬性應該明智而且很少使用。
酒店ant.project.name通常是通過項目
=> <project name="whatever">
的name屬性設置,但它不是強制性的,意味着
<project> ... </project>
足以使你的XML有效antscript。
在你的情況<echo>${ant.project.name}</echo>
將回聲${ant.project.name}
,
物業沒有設置,所以你可能在你的腳本屬性任務創建它:
<property name="ant.project.name" value="whatever"/>
。
但是,使用通常用於「螞蟻內部」的屬性名稱似乎不是最佳選擇。
如果在項目標籤中設置了屬性,則可以通過script task覆蓋該值,使用內置JavaScript引擎和ant api,f.e. :
<project name="foo">
<property name="bla" value="foobar"/>
<echo>1. $${ant.project.name} => ${ant.project.name}</echo>
<script language="javascript">
project.setUserProperty('ant.project.name', project.getProperty('bla'));
</script>
<echo>2. $${ant.project.name} => ${ant.project.name}</echo>
</project>
輸出:
[echo] 1. ${ant.project.name} => foo
[echo] 2. ${ant.project.name} => foobar
注意:爲ant.project.name不是一個 '正常' 的性質(通過Ant腳本中的屬性任務中聲明的那些屬性),你有使用方法project.setUserProperty(String, String)
而不是project.setProperty(String, String)
。 Userproperties是通過-Dkey = value命令行參數定義的屬性,並享有特殊保護。
螞蟻還提供了一堆builtin properties