有問題嗎?
有問題嗎?
此頁面詳細說明您可以採取的一些步驟,以嘗試解決您在使用 Apache Ant 時遇到的任何問題。如果您發現無法解決問題,則此頁面將幫助您收集一些相關資訊,以提供錯誤報告。這些資訊將有助於 Ant 開發人員了解並解決問題。當然,這裡並非所有步驟都適用於您可能遇到的每個問題 - 這些只是為您指明正確方向的一些建議。
確保您實際上執行的是您認為自己執行的 Ant 版本
許多工具都包含 Ant 的版本,有些作業系統甚至現在預設安裝它,因此您可能安裝了您不知道的 Ant 版本。
首先要做的其中一件事是執行
ant -version
和
ant -diagnostics
以確保。此外,我們強烈建議您在 CLASSPATH 為空的情況下執行 Ant。如果可以從 CLASSPATH 載入任何其他版本的 Ant,則可能會發生許多類型的錯誤,因為載入了不相容的類別。
請參閱 常見問題,了解 一些 範例,但許多其他問題也是系統中舊版 Ant 造成的。
閱讀手冊
當您在使用 Ant 時遇到問題時,首先要做的步驟是閱讀 手冊 中造成您困擾的任務或概念條目。特別是,請檢查任務屬性和巢狀元素的含義。也許有一個可用的屬性可以提供您需要的行為。如果您對手冊本身有問題,您可以提交文件錯誤報告(見下文)以幫助我們改善 Ant 文件。
檢查偵錯輸出
如果您仍然遇到問題,下一步是嘗試收集有關 Ant 正在執行的動作的其他資訊。嘗試使用 verbose
旗標執行 Ant
ant -verbose
或
ant -v
這將產生類似以下內容的輸出
Ant 版本 1.4.1 編譯於 2001 年 10 月 11 日 建置檔:build.xml 偵測到 Java 版本:1.3 位於:D:\usr\local\java\jdk13\jre 偵測到作業系統:Windows NT 剖析建置檔 D:\ant\build.xml,URI = file:D:/ant/build.xml 專案基礎目錄設定為:D:\ant [屬性] 載入環境 env。 [屬性] 載入 D:\ant\conf.properties 目標 'debug' 的建置順序為 [debug] 完整的建置順序為 [debug, gensrc, compile, jar, test] . . . |
您應該可以從追蹤中看到更多關於 Ant 正在執行什麼動作以及為什麼採取特定動作的資訊。如果您需要更多資訊,您可以使用 -debug
旗標,而不是 -verbose
。這通常會產生大量的輸出,您可能需要將輸出儲存到檔案中,並在編輯器中分析它。您可以使用 -logfile <filename>
旗標或使用重新導向來儲存輸出。
一旦您擁有所有這些除錯資訊,您如何使用它們來解決您的問題?這將取決於有問題的任務和您的問題的性質。每個任務都會記錄其操作的不同方面,但它應該讓您了解正在發生什麼事。例如,<javac>
任務會記錄它選擇編譯特定類別檔案而不編譯其他類別檔案的原因,以及它正在使用的編譯器和它將傳遞給該編譯器的參數。以下部分追蹤顯示了為什麼 <javac>
會新增一個類別檔案,但略過另一個類別檔案。接著是它將使用的編譯器、將傳遞給編譯器的參數,以及所有要編譯的類別檔案清單。
[javac] 省略 Test.java,因為 D:\classes\Test.class 已是最新的。 [javac] 新增 Unset.java,因為 D:\classes\Unset.class 已過時。 [javac] 編譯 1 個原始檔到 D:\classes [javac] 使用傳統編譯器 [javac] 編譯參數:-d D:\classes -classpath D:\classes; D:\jdk118\classes.zip; -sourcepath D:\src\java -g:none [javac] 要編譯的檔案 D:\src\java\Unset.java |
在很多情況下,Ant 任務是 OS 命令或其他 Java 類別的包裝器。在偵錯模式下,許多這些任務會列印出等效的命令列,就像 <javac>
任務輸出所做的那樣。如果您遇到問題,通常會直接從命令列執行命令很有用,就像 Ant 執行命令一樣,並查看問題是否也發生在那裡。問題可能出在正在執行的命令中,也可能出在 Ant 任務執行命令的方式中。您還可以查看變更屬性值對所產生命令列的影響。這可以幫助您了解是否使用正確的屬性和值。
問題是否已修復?
檢查偵錯輸出後,如果您仍然認為您遇到的問題是由 Ant 引起的,那麼很可能是其他人可能已經遇到過這個問題,並且可能已經修復了。因此,下一步是下載 ant 的來源,請參閱 svn。
Gump 每晚都在建置 ant,並使用從最新來源建置的 ant 來建置一大堆開源專案。但是,gump 建置的 ant 版本無法下載。即使可以,它也不會包含大多數的選用任務。
我們目前沒有包括選用任務的夜間建置。
錯誤
如果您確信已經找出一個未修復的錯誤,請參閱我們關於 錯誤資料庫 的文件。