kotlin - 在 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']
}
}
}
我的规格是:
- 爪哇:11
- 操作系统:Windows 10
- Intellij:IntelliJ IDEA 2020.2.3,10 月 6 日构建
解决方案
推荐阅读
- python - python xml.etree.ElementTree 删除文本中间的空标签
- java - 如何以最佳方式使用 Apache Beam 和 BigQueryIO 从多个 BigQuery 表中检索数据?
- c# - 选择时如何从 Richtextbox 中复制一行?
- python - 检查 Selenium 是否基于 Web 元素滚动的条件?
- bootstrap-modal - 一个引导模式会影响另一个
- java - 我无法在程序的主循环中输入第二个选项
- python - list() 函数对可迭代对象有什么作用?
- docker - nginx 403 Forbidden on laravel project with docker
- mongodb - 如何通过shell脚本执行mongo命令?(我的不工作)
- python - start_request 的循环槽 CSV