在Gradle中定义bootRun任务的替代方法不起作用

问题描述 投票:0回答:1

我通常在Gradle中定义任务(使用Groovy),例如tasks.withType(Type);例如:tasks.withType(JavaCompile)tasks.withType(Test)

[现在,我想对某些提供的Spring Boot任务执行相同的操作,即:bootRunbootStartScripts,但Gradle找不到它。

我知道这很愚蠢,我可以只使用bootRunbootStartScripts来逃脱,但是我想了解为什么不能用这种方式配置/定义它们。

gradle groovy
1个回答
1
投票

我想用define来表示configure,因为withType仅可用于配置现有任务。它具有一个任务类型(一个类)和一个闭包,可用于配置该类型的all可用任务。需要考虑到这一点,因为一个项目可能包含实际上应该做完全不同的事情的相同类型的多个任务。无论是配置所有这些任务还是仅配置一个特定任务,都很重要!

要将任务类型传递给方法withType,您需要知道实现任务类型的类的名称。此名称不一定与实际任务的名称相关。对于Gradle Java插件的testcompileJava任务,这些类为org.gradle.api.tasks.testing.Testorg.gradle.api.tasks.testing.Test。由于这些类由Gradle提供,因此它们会自动导入,并可以通过其简单名称org.gradle.api.tasks.compile.JavaCompileorg.gradle.api.tasks.compile.JavaCompile进行引用。但是Spring Boot插件是第三方插件,因此需要使用全名来引用这些类。

您问题中的任务Test的类型为JavaCompile,由Gradle提供。因此可以这样配置:

bootStartScripts

任务CreateStartScript的类型为tasks.withType(CreateStartScripts) { // configure } ,由Spring Boot插件提供。因此,您需要指定全名:

bootRun
© www.soinside.com 2019 - 2024. All rights reserved.