使用典型命令行args(-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
)远程调试gradle构建时,我只能在我提供的类中的断点上停止;我无法在构建脚本中停止。
根据各种来源,包括here,这显然是预期的行为。例如:
apply plugin: 'groovy' // not able to stop debugger here
class Penguin() {
def ork() {
println 'ork!' // able to stop debugger here
}
}
new Penguin().ork()
我试图理解为什么会这样?为什么Gradle不允许调试构建脚本中的每一行?
谢谢!
答案 0 :(得分:1)
虽然它与groovy非常相似,但build.gradle
文件是由Gradle解析的自定义DSL。断点只能添加到.java
或.groovy
个文件中,并且没有此类文件可以将断点添加到。
我相信如果您使用kotlin-dsl而不是groovy DSL
,您可以在kotlin buildscript中放置断点并在IntelliJ IDEA中调试,但我不是100%确定在这个
如果您真的想要调试,可以将所有内容移动到可以调试的插件中,并在build.gradle
中有一行
$根/的build.gradle
apply plugin: MyBuildScript
$根/ buildSrc / SRC /主/常规/ MyBuildScript.groovy
import org.gradle.api.*
class MyBuildScript implements Plugin<Project> {
void apply(Project project) {
project.with {
apply plugin: 'foo'
dependencies { ... }
task bar(type: Baz) { ... }
// etc
}
}
}