將檔案從原生編碼轉換成帶有轉義 Unicode 的 ASCII。常見的用法是將使用原生作業系統編碼維護的原始檔在編譯前轉換為 ASCII。
目錄 src 中的檔案會從原生編碼轉換為 ASCII。預設會轉換目錄中的所有檔案。不過,可以使用 includes 和 excludes 屬性將轉換限制為選定的檔案。有關檔案比對模式的詳細資訊,請參閱 目錄為基礎的任務 一節。如果未指定 encoding,則會使用 JVM 的預設編碼。如果指定 ext,則會將輸出檔案重新命名,並使用它作為新的副檔名。可以使用巢狀的 <mapper>
元素來達成更精密的檔名轉換。預設會使用 身分對應。如果 dest 和 src 指向同一個目錄,則需要 ext 屬性或巢狀的 <mapper>
。
此任務會形成一個隱含的 檔案集,並支援 <fileset>
的大多數屬性(dir 會變成 src),以及巢狀的 <include>
、<exclude>
和 <patternset>
元素。
可以使用不同的轉換器。這可以使用 implementation 屬性或巢狀元素來選擇。以下是屬性的選擇
default—平台的預設轉換器:在 Kaffe 上執行時為 kaffe,否則為內建。
sun—過去是 JDK 8 或更早版本的標準轉換器
kaffe—Kaffe 的標準轉換器
builtin—Ant 的內部實作。自 Ant 1.9.8 起
屬性 | 說明 | 必要 |
---|---|---|
reverse | 反轉轉換的意義,亦即從 ASCII 轉換為原生 僅 sun和 builtin轉換器支援 |
否 |
encoding | 檔案的原生編碼 | 否;預設為 JVM 的預設字元編碼 |
src | 要尋找檔案的目錄;預設為 basedir | 否 |
dest | 要輸出檔案的目錄 | 是 |
ext | 用於重新命名輸出檔案的副檔名 | 否 |
includes | 必須包含的檔案模式的逗號或空格分隔清單。 | 否;預設為全部 (**) |
includesfile | 檔案名稱。此檔案的每一行都會被視為包含模式 | 否 |
排除 | 必須排除的檔案範本,以逗號或空格分隔列出。 | 否;如果 defaultexcludes 為 no,則預設為預設排除或無 |
excludesfile | 檔案名稱。此檔案的每一行都被視為排除範本 | 否 |
defaultexcludes | 指出是否應使用預設排除 (yes|no)。 |
否;預設為 yes |
implementation | 要使用的轉換器實作。(請參閱上述 清單 中的有效轉換器。) | 否;預設為目前 JVM 的預設轉換器 |
您可以使用巢狀 <arg>
元素為轉換器指定其他命令列引數。這些元素的指定方式類似於 命令列引數,但有一個額外的屬性,可用於僅在使用特定轉換器實作時啟用引數。
屬性 | 說明 | 必要 |
---|---|---|
value | 請參閱 命令列引數。 | 這些元素中只有一個 |
line | ||
file | ||
path | ||
implementation | 僅在所選的轉換器實作與此屬性的值相符時傳遞指定的引數。合法值與上述 清單 中的有效編譯器相同。) | 否 |
自 Apache Ant 1.8.0 起
如果已指定自訂類別,則載入轉換器實作時要使用的類別路徑,類似於路徑的結構。使用內建轉換器之一時,不會有任何效果。
自 Ant 1.8.0 起
如果已定義的類型實作 Native2AsciiAdapter
介面,則可以將該類型的巢狀元素用作 implementation 屬性的替代方法。
將 srcdir 目錄中所有以 .eucjis 結尾的檔案從 EUCJIS 編碼轉換為 ASCII,並將它們重新命名為以 .java 結尾。
<native2ascii encoding="EUCJIS" src="srcdir" dest="srcdir" includes="**/*.eucjis" ext=".java"/>
將 native/japanese 目錄中所有以 .java 結尾的檔案轉換為 ASCII,並將結果放置在 src 目錄中。檔案名稱保持不變。
<native2ascii encoding="EUCJIS" src="native/japanese" dest="src" includes="**/*.java"/>
如果您想使用自訂 Native2AsciiAdapter
org.example.MyAdapter
,您可以使用 implementation 屬性
<native2ascii encoding="EUCJIS" src="srcdir" dest="srcdir" includes="**/*.eucjis" ext=".java" implementation="org.example.MyAdapter"/>
或定義一個類型並將其巢狀放入任務中,如下所示
<componentdef classname="org.example.MyAdapter" name="myadapter"/> <native2ascii encoding="EUCJIS" src="srcdir" dest="srcdir" includes="**/*.eucjis" ext=".java"> <myadapter/> </native2ascii>
在這種情況下,您的 native2ascii
適配器可以支援其自己的屬性和巢狀元素。