【发布时间】:2011-03-03 16:01:06
【问题描述】:
我想了解 ANT 使用 eclipse 的调试能力。基本上 我有一个同事编写的 ANT 构建脚本,我想一步 通过每个目标,看看存在的各种任务是什么 调用。
【问题讨论】:
我想了解 ANT 使用 eclipse 的调试能力。基本上 我有一个同事编写的 ANT 构建脚本,我想一步 通过每个目标,看看存在的各种任务是什么 调用。
【问题讨论】:
您可以通过以下步骤在 Eclipse 中执行此操作:
【讨论】:
创建一个脚本antdebug.sh,在启动ant之前设置环境变量ANT_OPTS
#!/bin/bash
set -e
export ANT_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=2607"
# now execute ant
exec ant "$@"
之后,您可以使用 IDE 远程附加到它。请注意suspend=y,它会暂停执行直到你被附加。
【讨论】:
由于 ant 只是一个 Java 应用程序,您只需在 eclipse 中添加一个调试配置(类型为 Java 应用程序)即可。请参阅Running Ant via Java,了解如何像调用 Java 应用程序一样调用 Ant。我假设您知道如何在 Eclipse 中调试 Java 应用程序,这样您就可以完成剩下的工作。如果没有,请询问,我将对此进行扩展。
【讨论】:
对于大型 ant 文件或大型 java 项目,当我们可能有多个 ant 文件相互调用时,我发现依赖关系图非常有用。为此,我使用了Grand。
当然,如果您想调试特定目标中的指令序列,这将无济于事。
【讨论】:
在深入研究 Ant 内部之前,可能值得尝试使用 -d(调试)标志运行脚本并观察输出。假设您有兴趣了解特定 Ant 脚本如何工作(或不工作)而不是 Ant 本身。
如果 Ant 是您感兴趣的领域,以上答案就是您要遵循的方向。
【讨论】:
在目标初始化后将下面的xml标签添加到ant build.xml
<javac srcdir="${src.java.dir}" destdir="${target.build.dir}" includeantruntime="true" source="${source}" target="${target}" debug="true" debuglevel="lines,vars,source" classpathref="main.classpath" fork="true" memoryinitialsize="512m" memorymaximumsize="512m" />
如果 javac 已经存在,请确保添加 debug="true" debuglevel="lines,vars,source" 以进行交互式调试会话。
【讨论】: