設定專案中的屬性(依據名稱和值),或設定屬性組(從檔案或資源)。屬性區分大小寫。
屬性不可變:誰先設定屬性,就凍結該屬性,在建置的其餘時間都無法變更;屬性絕對不是變數。
有七種方式可以設定屬性
java.util.Properties
類別中使用的檔案格式相同,關於如何跳脫非 ISO-8859-1 字元的規則也相同。java.util.Properties
類別中使用的檔案格式相同。prefix.availableProcessors
、prefix.freeMemory
、prefix.totalMemory
和prefix.maxMemory
會定義為Runtime類別的對應方法傳回的值。雖然可以結合這些方式,但一次只能使用一種方式。例如,屬性設定的順序可能會發生問題。
要設定的屬性值部分可能包含對其他屬性的參照。這些參照會在設定這些屬性時解析。這也適用於從屬性檔載入的屬性。
可以在這裡找到預先定義的屬性清單。
自 Apache Ant 1.8.0 起,在 Java 5+ 上執行時,可以載入根據Sun DTD定義的 XML 中的屬性。為此,檔案、資源或 url 的名稱必須以.xml結尾。
屬性 | 說明 | 必要 |
---|---|---|
名稱 | 要設定的屬性的名稱。 | 否 |
值 | 屬性的值。 | 當 name 屬性設定時,這些或巢狀文字之一 |
位置 | 將屬性設定為給定檔案的絕對檔案名稱。如果此屬性的值是絕對路徑,則會保持不變(將 /和 \字元轉換為目前的平台慣例)。否則,它會被視為相對於專案 basedir 的路徑並加以展開。 |
|
refid | 參考在其他地方定義的物件。僅對 路徑結構 或屬性的參考產生合理的結果。 | |
資源 | 包含屬性設定的類別路徑資源的名稱,格式為屬性檔案。 | 除非設定 name 屬性,否則為下列其中之一 |
檔案 | 要載入的屬性檔案位置。 | |
網址 | 包含屬性格式設定的網址。 | |
環境 | 擷取環境變數時要使用的前置詞。因此,如果您指定 environment=myenv,您將能夠透過屬性名稱 myenv.PATH 或 myenv.TERM 存取作業系統特定的環境變數。請注意,如果您提供最終 .的屬性 name,它不會加倍;亦即 environment= myenv.仍會允許透過 myenv.PATH 和 myenv.TERM 存取環境變數。目前僅在 選定的平台 上實作此功能。歡迎傳送程式碼修補程式,以增加支援此功能的平台數量 ;-).另請注意,屬性會區分大小寫,即使作業系統上的環境變數不會區分大小寫;例如 Windows 2000 或更新版本的系統路徑變數會設定為 Ant 屬性名稱 env.Path ,而不是 env.PATH 。 |
|
執行階段 | 擷取執行階段屬性時要使用的前置詞。因此,如果您指定 runtime=myrt,您將能夠透過屬性名稱 myrt.availableProcessors 、myrt.maxMemory 、myrt.totalMemory 或 myrt.freeMemory 存取對應於 Runtime 類別中方法的執行階段值。請注意,如果您提供最終 .的屬性名稱,它不會加倍;亦即 runtime= myrt.仍會允許存取執行階段屬性,例如 myrt.maxMemory 。另請注意,屬性值是 property 執行時所擷取的快照。自 Ant 1.10.4 起
|
|
類別路徑 | 查詢資源時要使用的類別路徑。 | 否 |
類別路徑參考 | 查詢資源時要使用的類別路徑,以 參考在其他地方定義的 <path> 提供。 |
否 |
前置詞 | 套用於使用 file、resource 或 url 載入的屬性的前綴。如果未指定,會在字首後加上 .。 |
否 |
prefixValues | 在使用 file、resource 或 url 載入的屬性的右側展開時,是否套用前綴。自 Ant 1.8.2 起 | 否;預設為 false |
relative | 如果設定為 true,會設定 basedir 的相對路徑。自 Ant 1.8.0 起 |
否;預設為 false |
basedir | 計算相對路徑的 basedir。自 Ant 1.8.0 起 | 否;預設為專案的 basedir |
使用 environment 屬性,此工作會載入 OpenVMS 系統上定義的所有邏輯。具有多個等效名稱的邏輯會對應到一個屬性,其值是所有等效名稱的逗號分隔清單。如果邏輯在多個表格中定義,只會提供最本地的定義(表格優先順序為 PROCESS、JOB、GROUP、SYSTEM)。
自 Ant 1.8.2 起,如果 Ant 偵測到它在 Java 5 或更新版本上執行,Ant 會使用 System.getenv()
,而不是它自己的作業系統依賴原生實作。對於某些作業系統,與舊版 Ant 相比,這會造成一些微小的差異。如需完整清單,請參閱 Bugzilla Issue 49366。特別是
PROMPT
)已不存在。BEGINLIBPATH
變數。Property
的 classpath 屬性為 路徑結構,也可以透過巢狀 classpath
元素設定。
將屬性 foo.dist
設定為值 dist
。
<property name="foo.dist" value="dist"/>
將屬性 foo.dist
設定為值 dist
。
<property name="foo.dist">dist</property>
從名為 foo.properties 的檔案讀取一組屬性。
<property file="foo.properties"/>
從網址 https://www.mysite.com/bla/props/foo.properties 讀取一組屬性。
<property url="https://www.mysite.com/bla/props/foo.properties"/>
從名為 foo.properties 的資源讀取一組屬性。
<property resource="foo.properties"/>
請注意,您可以使用下列方式為所有 Ant 建置參照一個全域屬性檔案
<property file="${user.home}/.ant-global.properties"/>
因為 JVM 將 user.home
屬性定義為您的家目錄。user.home
屬性在檔案系統中解析到的位置取決於作業系統版本和 JVM 實作。在基於 Unix 的系統上,這會對應到使用者的家目錄。在現代 Windows 變體上,這很可能會解析到 Documents and Settings 或 Users 資料夾中的使用者目錄。Windows 98/ME 等較舊的 Windows 變體較難預測,其他作業系統/JVM 組合也是如此。
讀取系統環境變數並將它們儲存在屬性中,字首為 env
。請注意,這只會在選定的作業系統上運作。會顯示兩個值的迴音。
<property environment="env"/> <echo message="Number of Processors = ${env.NUMBER_OF_PROCESSORS}"/> <echo message="ANT_HOME is set to = ${env.ANT_HOME}"/>
此建置檔使用 build.properties 中定義的屬性。關於環境變數 STAGE
,某些或所有值可能會被覆寫,例如有 STAGE=test
和 test.properties,您有特殊值(例如測試伺服器的另一個名稱)。最後,所有這些值都可以透過每個使用者的檔案以個人設定覆寫。
<property environment="env"/> <property file="${user.name}.properties"/> <property file="${env.STAGE}.properties"/> <property file="build.properties"/>
將相對路徑儲存在 foo
:../my/file.txt
<property name="foo" location="my/file.txt" relative="true" basedir=".."/>
將相對路徑儲存在 foo
:cvs/my/file.txt
<property name="foo" location="my/file.txt" relative="true" basedir="cvs"/>
如所述,此任務將載入儲存在檔案系統或作為類別路徑資源的屬性檔。以下是關於此功能的一些有趣事實
\u0456
或 \"
樣式跳脫。true。
檔案內屬性擴充非常棒。學習使用它。
範例
build.compiler=jikes deploy.server=lucky deploy.port=8443 deploy.url=https://${deploy.server}:${deploy.port}/
當 Ant 開始支援從環境變數設定屬性時,它在 Java 1.2 上執行,其中 System.getEnv
無法使用。因此,我們決定在新的程序中啟動一個指令,它會印出環境變數、分析輸出並建立屬性。在 Ant 1.9.0 中,當我們開始需要 Java 5 時,我們改回 System.getEnv
,即使它在某些平台上傳回不同的結果。以下說明的指令仍用於 OpenVMS 或如果 System.getEnv
引發例外狀況。
以下作業系統的指令已在 Execute.java(方法 getProcEnvCommand()
)中實作
作業系統 | 指令 |
---|---|
os/2 | cmd /c set |
windows | |
* win9x | command.com /c set |
* 其他 | cmd /c set |
z/os | /bin/env 或 /usr/bin/env 或 env (取決於讀取權限) |
unix | /bin/env 或 /usr/bin/env 或 env (取決於讀取權限) |
netware | env |
os/400 | env |
openvms | show logical |