【问题标题】:Debug gradle internal classes in IntelliJ在 IntelliJ 中调试 gradle 内部类
【发布时间】:2019-04-23 18:45:06
【问题描述】:

我有一个自定义任务,比如这个:

task hello { doLast { println 'Hello, World!' } }

现在我可以在doLast 上设置断点,IntelliJ 将停在那里,但我无法调试到 gradle 核心类,例如:org.gradle.api.internal.project.DefaultProject#task(...)

是否可以附加 Gradle 源以在 IntelliJ 中调试 Gradle 内部类?

【问题讨论】:

  • 也许这有帮助:stackoverflow.com/a/51884925/6899896?此外,您应该将 gradle 包装器配置为使用“*-all”分布(例如 distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
  • 您还必须添加依赖项“gradleApi() (dependencies { compileOnly gradleApi() }) 以使 Gradle 源代码可用于调试

标签: gradle intellij-idea


【解决方案1】:

我不知道如何将评论转换为答案,但基本上,@m-ricciuti 是正确的,必须做的是:

  • implementation(gradleApi())(在Kotlin DSL 中)添加到dependencies
  • gradle-wrapper.properties中指定-all分布:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-all.zip
  • 在 IntelliJ 中创建“远程 JVM 调试”运行配置(所有设置都可以保持“原样”)
  • 使用参数gradlew <task> -Dorg.gradle.debug=true --no-daemon 运行gradle,它会说“正在启动守护程序”并暂停
  • 通过 Debug 按钮启动创建的运行配置

这样,您可以在@TaskAction 方法上设置断点,还有更多,但是,我仍然无法在CloseableHttpClientInternalHttpClient 类中设置断点。这基本上是我最感兴趣的,所以如果有人知道更多......请加入!

【讨论】:

    猜你喜欢
    • 2013-12-12
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多