gradle - 在 Gradle 中定义 bootRun 任务的替代方法不起作用
问题描述
我通常在Gradle
(使用Groovy
)like中定义任务tasks.withType(Type)
;例如:tasks.withType(JavaCompile)
、tasks.withType(Test)
等。
现在,我想对一些提供的Spring Boot
任务做同样的事情,即:bootRun
和bootStartScripts
,但Gradle
找不到它。
bootRun
我知道这很愚蠢,我可以通过使用and逃脱bootStartScripts
,但我想了解为什么不能以这种方式配置/定义这些。
解决方案
我猜你的定义是configure,因为withType
只能用于配置现有任务。它需要一个任务类型(一个类)和一个可用于配置该类型的所有可用任务的闭包。这需要考虑,因为一个项目可能包含多个相同类型的任务,这些任务实际上应该做完全不同的事情。是配置所有这些任务还是只配置一个特定的任务很重要!
要将任务类型传递给方法withType
,您需要知道实现任务类型的类的名称。此名称不一定与实际任务的名称相关。对于 Gradle Java 插件的任务test
和compileJava
这些类是org.gradle.api.tasks.testing.Test
和org.gradle.api.tasks.compile.JavaCompile
。由于这些类是由 Gradle 提供的,因此它们会自动导入,并且可以通过它们的简单名称Test
和JavaCompile
. 但是Spring Boot Plugin是第三方插件,所以类需要引用全名。
您问题中的任务bootStartScripts
是类型CreateStartScript
,由 Gradle 提供。因此可以这样配置:
tasks.withType(CreateStartScripts) {
// configure
}
任务bootRun
类型org.springframework.boot.gradle.tasks.run.BootRun
为 ,由 Spring Boot Plugin 提供。所以你需要指定全名:
tasks.withType(org.springframework.boot.gradle.tasks.run.BootRun) {
// configure
}
推荐阅读
- python - 在python中读取和提取条目
- linux - 使用脚本将文件从 Linux 复制到 Windows
- java - 我正在尝试编写查找和替换 Java 程序
- flowtype - 键入的未密封对象不允许使用新道具
- random - 如何使文本在一定时间后自动更改?
- php - 使用 tld 之后的所有内容重定向 URL
- ios - 能够保持对创建 Timer 的线程的引用吗?
- c++ - 如何在 QT Creator 上将 QWidget 声明为继承类的对象?
- azure-devops - 我们可以在 Azure DevOps 中同时启动 2 个具有相同产品积压的 sprint 吗?
- javascript - 如何添加到对象内的数组