您可以通过包装任务来解决这个问题,方法是在运行时在其内部创建所需的JavaExec任务
doLast { }
关闭。
对于Groovy DSL:
task myTask {
group = 'MyGroup'
description = 'Runs Hello.java'
dependsOn 'build'
doLast {
tasks.create('myTaskExec', JavaExec) {
main = 'com.example.Hello'
args = ['foo', 'bar']
classpath = sourceSets.main.runtimeClasspath
}.exec()
}
}
对于Kotlin DSL:
tasks.register("myTask") {
group = "MyGroup"
description = "Runs Hello.java"
dependsOn(mutableListOf("build"))
doLast {
tasks.create<JavaExec>("myTaskExec") {
main = "com.example.Hello"
args = mutableListOf("foo", "bar")
classpath = sourceSets.main.get().runtimeClasspath
}.exec()
}
}
task execFile {
dependsOn 'build'
doLast {
tasks.create('execFileJavaExec', JavaExec) {
main = mainClass
classpath = sourceSets.main.runtimeClasspath
if (System.getProperty('debug', 'false') == 'true') {
jvmArgs "-Xdebug", "-agentlib:jdwp=transport=dt_socket,address=8788,server=y,suspend=y"
}
systemProperties System.getProperties()
}.exec()
}
}