如何在gradle.build中调试空指针异常

时间:2016-03-08 13:37:12

标签: intellij-idea gradle groovy refactoring

我有这个gradle.build groovy文件:

task BL_generate_parallel_warmup(type: JavaExec) {
     if (project.hasProperty('serverversion')) {
        args(serverversion)
    }
    if (project.hasProperty('input_flavor')) {
        systemProperties['input_flavor'] = input_flavor
        print "gradle input_flavor" + input_flavor
    }
    jvmArgs = ["-Xms1024m", "-Xmx1024m"]
    classpath sourceSets.main.runtimeClasspath
    dependsOn resources_cleaner_bl
    systemProperties['isDummyRun'] = 'true'
    main = "astar.BlParallelGenerator"
}

在我重构之后:

def setSystemProperties() {
    if (project.hasProperty('serverversion')) {
        args(serverversion)
    }
    if (project.hasProperty('input_flavor')) {
        systemProperties['input_flavor'] = input_flavor
        print "gradle input_flavor" + input_flavor
    }
    jvmArgs = ["-Xms1024m", "-Xmx1024m"]
    classpath sourceSets.main.runtimeClasspath
}



//warm up

task BL_generate_parallel_warmup(type: JavaExec) {
    setSystemProperties()
    dependsOn resources_cleaner_bl
    systemProperties['isDummyRun'] = 'true'
    main = "astar.BlParallelGenerator"
}

我收到此错误:

Error:(121, 0) A problem occurred evaluating root project 'MyProject'.
<a href="openFile">Open File</a>

更新

我通过改变来解决这个问题:

def setSystemProperties(project) {
        if (project.hasProperty('serverversion')) {
            args(serverversion)
        }
        if (project.hasProperty('input_flavor')) {
            systemProperties['input_flavor'] = input_flavor
            print "gradle input_flavor" + input_flavor
        }
        jvmArgs = ["-Xms1024m", "-Xmx1024m"]
        classpath sourceSets.main.runtimeClasspath
    }



    //warm up

    task BL_generate_parallel_warmup(type: JavaExec) {
        setSystemProperties(project)
        dependsOn resources_cleaner_bl
        systemProperties['isDummyRun'] = 'true'
        main = "astar.BlParallelGenerator"
    }

如何在intellij中调试它?

我在调试中按下了运行并在gradle构建中添加了一个断点,但它并没有停在任何地方。

我尝试过这样的“编辑配置”:

enter image description here 但它没有使代码在断点处停止

1 个答案:

答案 0 :(得分:1)

可以在此处找到Gradle中调试的参考文档:https://www.jetbrains.com/idea/help/create-run-debug-configuration-for-gradle-tasks.html

要为Gradle任务创建调试配置,请在Gradle工具窗口中右键单击任务,然后选择Create。您将获得有关如何配置调试配置的选项。

由于您使用的是JavaExec类型的任务,因此还有另一种选择。 您可以在主类中放置断点,并在IntelliJ中配置远程调试会话。 enter image description here

在显示图像时,我创建了一个正在侦听端口5005的远程类型调试配置。 然后在JavaExec类型任务中添加debug=true选项,如下所示:

task runApp(type: JavaExec){
    classpath  file('c:/data/test')
    main = 'TestMain'
    debug = true
}

要调试它,您可以单击IntelliJ中Gradle插件中的runApp任务,然后启动Local_Port_5005远程调试会话并让任务停在断点处。

enter image description here