在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;)