Intellij IDEA 是不是支持调试用 ant 构建的项目?
Posted
技术标签:
【中文标题】Intellij IDEA 是不是支持调试用 ant 构建的项目?【英文标题】:Does Intellij IDEA support debugging a project built with ant?Intellij IDEA 是否支持调试用 ant 构建的项目? 【发布时间】:2015-01-27 14:32:13 【问题描述】:这个项目使用 Ant 作为它的构建系统。通过 Ant 运行项目可以调试吗?
【问题讨论】:
Ant 与它无关。 Ant 是一个构建工具。调试在运行时进行。 @BoristheSpider 如果您正在使用复杂的构建文件,逐步调试它可以帮助您了解它实际上是如何构建您的项目的。 我是 IntelliJ IDEA 的忠实拥护者,但特别是在这项任务中,Eclipse 做得很好 【参考方案1】:Ant 主要用于构建,而不是用于运行 Java 应用程序。 不过好吧,我假设您正在使用 ant Java 任务运行您的应用程序。
Ant Java task
如果是这样,是的,您可以通过使用远程调试来做到这一点。
Remote debugging a Java application
事实上,您可以像这样调试任何 Java 应用程序。 通过 ant 启动的应用仍然是 Java 应用。
【讨论】:
哦,当然!我不应该通过 ant 运行我的应用程序,而只是构建应用程序。这正是我需要的知识。谢谢。 那么在运行ant任务时如何添加agentlib呢?我看不到指定 JVM 参数的地方。编辑:啊,我明白了,右键单击“Ant Build”面板中的 Ant 任务,Properties
,Execution
,Ant command line
【参考方案2】:
有一个专门的IDEA插件用于调试带有断点的ant脚本源:
https://plugins.jetbrains.com/plugin/7195?pr=idea
https://github.com/opticyclic/antdebugger/
或者可以使用与ant debugging in eclipse相同的方法。
【讨论】:
这不就是调试buiild.xml吗? @reversiblean,是的,这个答案是关于调试 build.xml 中的 ant 脚本,而不是用它们构建的项目。看来,我被这个问题的模糊措辞欺骗了。【参考方案3】:将此行包含在您的 java 运行时任务中,在您的 build.xml 中:
<jvmarg value="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"/>
例如,如果它是 ant junit 任务,它将是这样的:
<target name="test" depends="test-compile">
<junit showoutput="yes" fork="true">
<jvmarg value="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"/>
</junit>
</target>
然后运行你的目标
ant clean test
Ant 测试将等到我们连接调试器。它将显示输出:
test:
[junit] Listening for transport dt_socket at address: 5005
然后只需在Intellij(或您首选的 IDE)中创建、运行远程运行/调试配置。
【讨论】:
以上是关于Intellij IDEA 是不是支持调试用 ant 构建的项目?的主要内容,如果未能解决你的问题,请参考以下文章
IntelliJ IDEA 记学习笔 - Tomcat 启动调试,支持:Maven profiles 区分环境
IntelliJ IDEA 记学习笔 - Tomcat 启动调试,支持:Maven profiles 区分环境