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 任务,PropertiesExecutionAnt 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 区分环境

用Intellij idea搭建solr调试环境

intellij idea 中的out怎么用重新生成

intellij idea debug/调试 查看方法返回值

Intellij IDEA 调试时的备用源