Replace
是以目錄為基礎的工作,用於取代選取檔案中特定字串的出現。
如果您要取代跨越換行符號的文字,您必須使用巢狀 <replacetoken>
元素。
只有當輸出檔案與現有檔案不同時,才會寫入輸出檔案。這可防止基於未變更檔案的虛假重建,而這些檔案已由這項工作重新產生。
屬性 | 說明 | 必要 |
---|---|---|
檔案 | 應取代其代碼的檔案。 | 兩個選項中必須擇一 |
目錄 | 在多個檔案中取代代碼時要使用的基本目錄。 | |
編碼 | 取代作業所使用的檔案編碼。 | 否;預設為 JVM 預設字元編碼 |
代碼 | 必須取代的代碼。 | 是,除非使用巢狀 replacetoken 元素或 replacefilterfile 屬性。 |
值 | 代碼的新值。 | 否;預設為空字串 () |
摘要 | 指出是否應產生取代作業的摘要,詳細說明已處理的代碼出現次數和檔案。 | 否;預設為無摘要 |
屬性檔案 | 有效的屬性檔案,其中包含使用巢狀 <replacefilter> 元素指定的屬性。 |
是,僅當使用 <replacefilter> 的 property 屬性時。 |
replacefilterfile | 有效的屬性檔案。每個屬性將視為 replacefilter ,其中 token 是屬性的名稱,而 value 是屬性的值。 |
否 |
包含 | 必須包含的檔案模式的逗號或空格分隔清單。 | 否;預設為全部 (**) |
包含檔案 | 檔案名稱。此檔案的每一行都會視為包含模式 | 否 |
排除 | 必須排除的檔案模式的逗號或空格分隔清單。 | 否;預設為預設排除或 (如果 defaultexcludes 為 no) 無 |
排除檔案 | 檔案名稱。此檔案的每一行都會視為排除模式 | 否 |
預設排除 | 指示是否使用預設排除 (yes|no)。 |
否;預設為 yes |
preserveLastModified | 即使檔案已修改,仍保留檔案時間戳記。自 Apache Ant 1.8.0 起。 | 否;預設為 false |
failOnNoReplacements | 如果任務沒有執行任何操作,是否讓建置失敗。自 Ant 1.8.0 起。 | 否;預設為 false |
<replace file="${src}/index.html" token="@@@" value="wombat"/>
將檔案 ${src}/index.html 中字串 @@@
的出現次數替換為字串 wombat
。
此任務形成一個隱含的 FileSet,並支援 <fileset>
的大部分屬性,以及巢狀的 <include>
、<exclude>
和 <patternset>
元素。
自 Ant 1.8.0 起,此任務支援任何基於檔案系統的 資源集合 作為巢狀元素。
如果您要替換的文字或替換文字跨越了行界線,您可以使用巢狀元素來指定它們。
這些元素支援屬性
屬性 | 說明 | 必要 |
---|---|---|
expandProperties | 是否在巢狀文字中展開屬性。自 Ant 1.8.0 起。 | 否;預設為 true |
<replace dir="${src}" value="wombat"> <include name="**/*.html"/> <replacetoken><![CDATA[multi line token]]></replacetoken> </replace>
將目錄 ${src} 中所有 HTML 檔案中字串 multi line\ntoken
的出現次數替換為字串 wombat
。其中,\n
是特定於平台的行分隔符號。
<replace file="${src}/index.html"> <replacetoken><![CDATA[two line token]]></replacetoken> <replacevalue><![CDATA[two line token]]></replacevalue> </replace>
除了允許多重替換之外,選擇性的巢狀 <replacefilter>
元素允許從屬性檔案中擷取替換值。此檔案的名稱使用 <replace>
屬性 propertyFile 指定。
屬性 | 說明 | 必要 |
---|---|---|
代碼 | 要搜尋的字串。 | 是,除非指定了巢狀 replacetoken |
值 | 替換字串。 | 可以指定其中一個,但不能同時指定兩個。如果需要,兩個都可以省略。 |
property | 其值用作替換值的屬性的名稱。 |
自 Ant 1.8.0 起,token 和 value 可以指定為巢狀元素,就像在任務本身中一樣。
如果未同時使用 value 和 property,則使用 <replace>
屬性 value 和/或 <replacevalue>
元素提供的數值。如果使用這些選項未指定任何值,則會將 token 替換為空字串。
在檔案 configure.sh 中,將所有 @token1@
的執行個體替換為 defaultvalue
,所有 @token2@
的執行個體替換為 value2
,以及所有 @token3@
的執行個體替換為屬性 property.key
的值,此值顯示在屬性檔案 src/name.properties 中。
<replace file="configure.sh" value="defaultvalue" propertyFile="src/name.properties"> <replacefilter token="@token1@"/> <replacefilter token="@token2@" value="value2"/> <replacefilter token="@token3@" property="property.key"/> <replacefilter> <replacetoken>@token4@</replacetoken> <replacevalue>value4</replacevalue> </replacefilter> </replace>
注意:可以在同一個操作中使用 token/<replacetoken>
和 value/<replacevalue>
屬性/元素,嵌套的 replacefilter
元素,或同時使用這兩種方式。