在Gradle中定义引导运行任务的另一种方法是';行不通

在Gradle中定义引导运行任务的另一种方法是';行不通,gradle,groovy,Gradle,Groovy,我通常在Gradle(使用Groovy)中定义任务,比如任务;e、 g.:tasks.withType(JavaCompile),tasks.withType(Test),等等 现在,我想对提供的一些Spring Boot任务执行相同的操作,即:bootRun和bootStartScripts,但是Gradle找不到它 我知道这很愚蠢,我可以通过使用bootRun和bootStartScripts来逃避,但我想理解为什么不能以这种方式配置/定义它们。我猜使用define是指配置,因为with t

我通常在
Gradle
(使用
Groovy
)中定义任务,比如
任务;e、 g.:
tasks.withType(JavaCompile)
tasks.withType(Test)
,等等

现在,我想对提供的一些
Spring Boot
任务执行相同的操作,即:
bootRun
bootStartScripts
,但是
Gradle
找不到它

我知道这很愚蠢,我可以通过使用
bootRun
bootStartScripts
来逃避,但我想理解为什么不能以这种方式配置/定义它们。

我猜使用define是指配置,因为
with type
只能用于配置现有任务。它采用任务类型(类)和闭包,可用于配置该类型的所有可用任务。这需要考虑,因为一个项目可能包含多个相同类型的任务,这些任务实际上应该做完全不同的事情。是配置所有这些任务还是只配置一个特定的任务很重要

要将任务类型传递给方法
withType
,您需要知道实现任务类型的类的名称。此名称不一定与实际任务的名称相关。对于Gradle Java插件的任务
test
compileJava
,这些类是和。因为这些类是由Gradle提供的,所以它们是自动导入的,可以通过它们的简单名称
Test
JavaCompile
进行引用。但是SpringBoot插件是第三方插件,因此需要用全名引用这些类

您问题中的任务
bootStartScripts
属于Gradle提供的类型
CreateStartScript
。因此,它可以如下配置:

tasks.withType(CreateStartScripts) {
    // configure
}
任务
bootRun
属于Spring引导插件提供的类型。因此,您需要指定全名:

tasks.withType(org.springframework.boot.gradle.tasks.run.BootRun) {
    // configure
}
我猜define的意思是configure,因为
withType
只能用于配置现有任务。它采用任务类型(类)和闭包,可用于配置该类型的所有可用任务。这需要考虑,因为一个项目可能包含多个相同类型的任务,这些任务实际上应该做完全不同的事情。是配置所有这些任务还是只配置一个特定的任务很重要

要将任务类型传递给方法
withType
,您需要知道实现任务类型的类的名称。此名称不一定与实际任务的名称相关。对于Gradle Java插件的任务
test
compileJava
,这些类是和。因为这些类是由Gradle提供的,所以它们是自动导入的,可以通过它们的简单名称
Test
JavaCompile
进行引用。但是SpringBoot插件是第三方插件,因此需要用全名引用这些类

您问题中的任务
bootStartScripts
属于Gradle提供的类型
CreateStartScript
。因此,它可以如下配置:

tasks.withType(CreateStartScripts) {
    // configure
}
任务
bootRun
属于Spring引导插件提供的类型。因此,您需要指定全名:

tasks.withType(org.springframework.boot.gradle.tasks.run.BootRun) {
    // configure
}

你不能只做
任务。withType(BootRun)
(你可能需要导入
org.springframework.boot.gradle.tasks.run.BootRun
)我的错:/…这是我最初做的,它不起作用。后来我不得不重新启动IDE,因为它进入了某种奇怪的状态。现在我再试了一次,效果很好……我应该先在CLI中运行。我盲目地相信IDE;)你不能只做
任务。withType(BootRun)
(你可能需要导入
org.springframework.boot.gradle.tasks.run.BootRun
)我的错:/…这是我最初做的,它不起作用。后来我不得不重新启动IDE,因为它进入了某种奇怪的状态。现在我再试了一次,效果很好……我应该先在CLI中运行。我盲目地相信IDE;)