我通常在Gradle
中定义任务(使用Groovy
),例如tasks.withType(Type)
;例如:tasks.withType(JavaCompile)
,tasks.withType(Test)
等
[现在,我想对某些提供的Spring Boot
任务执行相同的操作,即:bootRun
和bootStartScripts
,但Gradle
找不到它。
我知道这很愚蠢,我可以只使用bootRun
和bootStartScripts
来逃脱,但是我想了解为什么不能用这种方式配置/定义它们。
我想用define来表示configure,因为withType
仅可用于配置现有任务。它具有一个任务类型(一个类)和一个闭包,可用于配置该类型的all可用任务。需要考虑到这一点,因为一个项目可能包含实际上应该做完全不同的事情的相同类型的多个任务。无论是配置所有这些任务还是仅配置一个特定任务,都很重要!
要将任务类型传递给方法withType
,您需要知道实现任务类型的类的名称。此名称不一定与实际任务的名称相关。对于Gradle Java插件的test
和compileJava
任务,这些类为org.gradle.api.tasks.testing.Test
和org.gradle.api.tasks.testing.Test
。由于这些类由Gradle提供,因此它们会自动导入,并可以通过其简单名称org.gradle.api.tasks.compile.JavaCompile
和org.gradle.api.tasks.compile.JavaCompile
进行引用。但是Spring Boot插件是第三方插件,因此需要使用全名来引用这些类。
您问题中的任务Test
的类型为JavaCompile
,由Gradle提供。因此可以这样配置:
bootStartScripts
任务CreateStartScript
的类型为tasks.withType(CreateStartScripts) {
// configure
}
,由Spring Boot插件提供。因此,您需要指定全名:
bootRun