Apache Ant 前端:ProjectHelper

什麼是 ProjectHelper?

Apache Ant 中的 ProjectHelper 負責解析建置檔案並建立代表建置工作流程的 Java 實例。它也會指出它可以解析哪種類型的檔案,以及預期哪個檔案名稱為預設輸入檔案。

Ant 的預設 ProjectHelper (org.apache.tools.ant.helper.ProjectHelper2) 會解析常見的 build.xml 檔案。如果命令列中未指定建置檔案,它會預期找到名為 build.xml 的檔案。

此類抽象化的直接好處是,它可以讓 Ant 了解 XML 以外的其他描述性語言。已經針對純 Java 前端和 Groovy 前端進行一些實驗(請向開發人員寄件清單詢問這些實驗的進一步資訊)。

從 Ant 1.8.2 開始import 任務也會嘗試使用適當的輔助程式來解析匯入的檔案。因此,可以使用不同的語言撰寫不同的建置檔案,並讓它們互相匯入。

Ant 如何選取適當的 ProjectHelper

Ant 了解 ProjectHelper 的多種實作,並且必須決定對每個建置檔案使用哪一種實作。

在啟動時,Ant 會列出找到的所有實作,並按照在內部「儲存庫」中找到的順序將它們保留在同一個順序中。

如果在嘗試實例化 ProjectHelper 時發生錯誤,Ant 會記錄錯誤,但不會停止。如果您想要進一步的 ProjectHelper 內部「儲存庫」偵錯資訊,請使用系統屬性 ant.project-helper-repo.debug 並將其設定為 true;然後也會列印完整的堆疊追蹤。

當預期 Ant 會解析檔案時,它會要求 ProjectHelper 儲存庫尋找能夠解析輸入檔案的實作。實際上,它只會反覆運算已排序的清單,而第一個回傳 truesupportsBuildFile(File buildFile) 的實作將會被選取。

當 Ant 啟動且未指定輸入檔案時,它會搜尋預設輸入檔案。它會反覆運算 ProjectHelper 清單,並選取第一個預期實際存在的預設檔案的清單。

撰寫您自己的 ProjectHelper

類別 org.apache.tools.ant.ProjectHelper 是預期要實作的 API。因此,透過延伸那個抽象類別來撰寫您自己的 ProjectHelper。然後,預期您至少要實作函式 parse(Project project, Object source)。另請注意,您的實作會由 Ant 執行個體化,而且它預期有一個沒有參數的預設建構函式。

有一些函式可以協助您定義您的輔助程式能夠做什麼,以及它預期的是什麼

現在您已經準備好您的實作,您必須向 Ant 宣告它。這裡有三個解決方案