自 Apache Ant 1.7 起
將 路徑 轉換為其值適合 Manifest 的 Class-Path
屬性的屬性。
在啟動應用程式時,這個任務通常用於解決 Windows 上的命令列限制,例如使用非常長的類別路徑。命令列上通常指定的長類別路徑會被單一(可能為空)的 jar 檔案取代,而這個 jar 檔案會在 manifest 中包含 Class-Path
屬性,其值會列出類別路徑應包含的所有 jar 和 zip 檔案。從這個屬性參照的檔案必須相對於 jar 檔案本身,通常位於同一個目錄中。JVM 會自動使用 jar 的 Class-Path
屬性中列出的所有檔案項目來尋找/載入類別。不過,請注意,它會自動忽略找不到任何對應檔案的項目。
請注意,建立的屬性值可能會超過 manifest 每行 72 個字元的最大長度,但會由 <manifest>
元素按照 Jar 規格適當換行,其中會重新參照已定義的屬性。
為了讓這個任務正常運作,從 jarfile
屬性中提供的檔案到巢狀 classpath
元素的相對路徑必須與您在部署 jar 時預期的相同。
屬性 | 說明 | 必要 |
---|---|---|
property | 要設定的屬性名稱。這個屬性不得已設定。 | 是 |
jarfile | 將包含 manifest(會使用這個任務將設定的屬性)的 Jar 檔案檔名。這個檔案目前不必存在,但其父目錄必須存在。 | 是 |
maxParentLevels | 允許從 jar 檔案導覽到路徑項目的父目錄最大數量。換句話說,從 jar 檔案到特定類別路徑項目相對路徑中允許的最大 ..數量。指定 0以強制路徑項目與 jar 檔案本身位於同一個目錄(或其子目錄之一)中。 |
否;預設為 2 |
一個 類似路徑 的元素,可以在此定義,或使用 <classpath refid="pathid"/>
語法參照其他地方定義的路徑。此類別路徑不可為空,且為必要。
假設已定義一個具有 id=classpath
的路徑,將此路徑相對於將包含 acme.jar 的 build/ 目錄進行轉換,稍後可以使用包含巢狀 <manifest>
元素的 <jar>
來建立,該元素會列出 <attribute name="Class-Path" value="${jar.classpath}"/>
。
<manifestclasspath property="jar.classpath" jarfile="build/acme.jar"> <classpath refid="classpath"/> </manifestclasspath>