gradle - Gradle 彩色输出(不再有 project.serviceOf() 或 services() api 方法)
问题描述
我从 gradle groovy 迁移到 gradle kotlin 构建脚本。
我曾经按照stackoverflow答案中的建议进行彩色输出
但是从 gradle 6.x 和 kotlin dsl 开始,这似乎不再起作用了。
services...
或project.serviceOf<>()
方法似乎不存在(不再/或在 kotlin dsl 中)。
关于如何从 kotlin build.gradle.kts 任务获得彩色控制台输出的任何想法?
解决方案
我不知道是否可以使用 DSL 在临时任务中获取服务注册表。但是,如果您可以将任务实现为具体类(如果您愿意,仍然可以在 DSL 中完成),您甚至可以注入内部 Gradle 服务。
对于 Kotlin 类,它可能如下所示:
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
import org.gradle.internal.logging.text.StyledTextOutput.Style
import org.gradle.internal.logging.text.StyledTextOutputFactory
import javax.inject.Inject
open class MyTask @Inject constructor(private val styledTextOutputFactory: StyledTextOutputFactory) : DefaultTask() {
@TaskAction
fun doStuff() {
val out = styledTextOutputFactory.create(javaClass.name)
out.withStyle(Style.Info).println("colored text")
}
}
tasks.register<MyTask>("myTask") // DSL
推荐阅读
- html - 在 a 中居中按钮
在一个里面
- angular - Ionic 5 - Angular 和服务器端重新渲染 (SSR)。错误:无法重新定义属性:构造函数
- spring-boot - Spring Security 在构建用户主体之前应用 HttpSecurity 过滤器
- android - Recyclerview 视图未填充
- python - 在一行中的 2 个数据框列上应用 Lambda
- mobile - Godot 对象以不同的速度移动
- javascript - 我将如何使用两个不同版本的 discord.js | Discord.js 机器人
- excel - 根据电源查询中的最新日期删除重复项
- c - 共享内存c中结构中的动态二维数组
- python - 保存熊猫数据框