Apache Ant site Apache Ant logo

Apache Ant 网站
首页
项目
 

遇到问题?

遇到问题?

此页面详细介绍了一些您可以采取的步骤,以尝试解决您在使用 Apache Ant 时遇到的任何问题。如果您发现无法解决问题,那么此页面将帮助您收集一些相关信息,以便在提交错误报告时提供。这些信息将帮助 Ant 开发人员理解并解决问题。当然,并非所有这些步骤都对您遇到的每个问题都有意义 - 这些只是一些建议,可以指引您朝着正确的方向前进。

确保您实际运行的是您认为的 Ant 版本

许多工具都包含 Ant 版本,现在一些操作系统甚至默认安装了 Ant,因此您可能安装了您没有意识到的 Ant 版本。

首先要做的事情之一是运行

ant -version



ant -diagnostics

以确保。此外,我们强烈建议您使用空的 CLASSPATH 运行 Ant。如果可以从 CLASSPATH 加载任何其他版本的 Ant,由于加载了不兼容的类,可能会发生许多类型的错误。

请参阅 常见问题解答,了解 一些 示例,但许多其他问题也是由于系统上存在旧版本的 Ant 造成的。

阅读手册

当您遇到 Ant 问题时,第一步是阅读 手册 中关于导致您遇到问题的任务或概念的条目。特别是,检查任务属性和嵌套元素的含义。也许有一个属性可以提供您需要的行为。如果您遇到手册本身的问题,您可以提交文档错误报告(见下文)以帮助我们改进 Ant 文档。

检查调试输出

如果您仍然遇到问题,下一步是尝试收集有关 Ant 正在执行的操作的更多信息。尝试使用 verbose 标志运行 Ant

ant -verbose



ant -v

这将产生类似于以下内容的输出

Ant version 1.4.1 compiled on October 11 2001
Buildfile: build.xml
Detected Java version: 1.3 in: D:\usr\local\java\jdk13\jre
Detected OS: Windows NT
parsing buildfile D:\ant\build.xml with URI = file:D:/ant/build.xml
Project base dir set to: D:\ant
[property] Loading Environment env.
[property] Loading D:\ant\conf.properties
Build sequence for target 'debug' is [debug]
Complete build sequence is [debug, gensrc, compile, jar, test]
. . .

您应该能够从跟踪中看到更多关于 Ant 正在执行的操作以及它为何采取特定行动的信息。如果您需要更多信息,可以使用 -debug 标志而不是 -verbose。这通常会产生太多输出,因此您可能希望将输出保存到文件并在编辑器中进行分析。您可以使用 -logfile <filename> 标志或使用重定向来保存输出。

拥有所有这些调试信息后,如何使用它来解决您的问题?这将取决于所讨论的任务和问题的性质。每个任务都会记录其操作的不同方面,但它应该让您了解正在发生的事情。例如,<javac> 任务会记录它选择编译哪些特定类文件以及不编译哪些特定类文件的原因,以及它使用的是哪个编译器以及它将传递给该编译器的参数。以下部分跟踪显示了为什么 <javac> 添加了一个类文件,但跳过了另一个类文件。接下来是它将使用的编译器、将传递给编译器的参数以及要编译的所有类文件的列表。

[javac] Test.java omitted as D:\classes\Test.class is up to date.
[javac] Unset.java added as D:\classes\Unset.class is outdated.
[javac] Compiling 1 source file to D:\classes
[javac] Using classic compiler
[javac] Compilation args: -d D:\classes -classpath D:\classes;
D:\jdk118\classes.zip; -sourcepath D:\src\java -g:none
[javac] File to be compiled
D:\src\java\Unset.java

在许多情况下,Ant 任务是围绕 OS 命令或其他 Java 类进行包装的。在调试模式下,许多这些任务会打印出等效的命令行,就像 <javac> 任务输出一样。如果您遇到问题,通常很有用的是直接从命令行运行该命令,以与 Ant 运行该命令的方式相同的方式运行,并查看问题是否也从那里出现。问题可能出在正在运行的命令中,也可能出在 Ant 任务运行该命令的方式中。您还可以查看更改属性值对生成的命令行的影响。这可以帮助您了解是否使用正确的属性和值。

它已修复了吗?

检查调试输出后,如果您仍然认为您遇到的问题是由 Ant 引起的,那么其他人可能已经遇到过这个问题,并且可能已经修复了。因此,下一步将是下载 ant 的源代码,请参阅 svn

Gump 每天晚上都会构建 ant,并使用从最新源代码构建的 ant 来构建大量开源项目。但是,gump 构建的 ant 版本不可下载。即使可以下载,它也不包括大多数可选任务。

我们目前没有包含可选任务的每日构建。

错误

如果您确信您已经识别出一个未修复的错误,请参阅我们关于 错误数据库 的文档。