首页 > 解决方案 > 在 Gradle 任务中使用“doLast”时忽略断点

问题描述

在 Kotlin + Gradle + IntelliJ 项目中,我注意到我可以使用 gradle.build 中定义的以下任务之一运行 \ 调试(命中断点)我的 Main 类:

// debug works!!
task debugTest1(type:JavaExec) {
    group = "Execution"
    description = "Run the main class with JavaExecTask"
    classpath = sourceSets.main.runtimeClasspath
    main = "temp.Main"
}

// debug works!
task debugTest2() {
    javaexec{
        group = "Execution"
        description = "Run the main class with JavaExecTask"
        classpath = sourceSets.main.runtimeClasspath
        main = "temp.Main"
    }
}

但是,当添加 'doLast' 时,IntelliJ 中的调试会运行但会忽略断点:

// debug ignores breakpoint!
task debugTest3() {
    doLast {
        javaexec{
            group = "Execution"
            description = "Run the main class with JavaExecTask"
            classpath = sourceSets.main.runtimeClasspath
            main = "temp.Main"
        }
    }
}

我的 build.gradle 文件与此类似

plugins {
    //id 'org.jetbrains.kotlin.jvm' version '1.3.72'
    id 'org.jetbrains.kotlin.jvm' version "1.4.20-RC"
}

group 'MY-COMPANY-GROUP'
version '1.0-SNAPSHOT'


repositories {
    mavenCentral()
}

allprojects {
    compileJava { options.encoding = "UTF-8" }
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib"
}

我的 temp.Main 文件(Main.kt):

@file:JvmName("Main")

package temp


fun main(args: Array<String>) {
    println("Hello World!")
    Object.setProperties();
    print("Object.setProperties() = ${Object.property1}")
}

我第一次遇到这个问题是在一个使用 Cucumber、Gradle 和 Kotlin 的项目中工作的。我所有的断点在这个项目中也被忽略了。该项目中的任务声明如下(基于 Cucumber 的文档):

task cucumber() {
    dependsOn assemble, testClasses
    doLast {
        javaexec {
            main = "io.cucumber.core.cli.Main"
            classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
            args = [/*'--plugin','pretty', */
                    '--glue', 'COMPANY-PACKAGE.cucumber.steps', 'src/test/resources/features',
                    '--tags','not @inProgress']
        }
    }
}

我的规格是:

标签: kotlindebugginggradleintellij-ideacucumber

解决方案


推荐阅读