如何在复合构建中解决 Spotless 任务
在使用 Spotless 的时候,我习惯直接在根路径运行 spotlessApply
,在 IDEA 里运行的命令是 gradle spotlessApply
。而我现在在项目中使用 composite build。我再在根目录运行 :composeiteBuild:spotlessApply
并不会格式化我 composite build 项目中的代码。表面原因是我刻意配置了 target("src/**/*.kt")
限定了格式化代码的范围使得格式化不生效,深层原因是 composite build 中子模块的 tasks 不会被根项目运行。于是如文档所说需要配置 tasks,让根项目的 task 依赖 composite build 的 tasks。但如文档中的配置方式会产生问题。What if 其中一个 composite build 并没有对应名称的 task 呢?于是,这就是这篇文章诞生的初衷。
首先我们先看看官方文档是如何配置的:
1 | tasks.register("publishDeps") { |
这种方式的问题是,他们默认每个 composite build 都有一个 publishMavenPublicationToMavenRepository
的 task。但是,如果你的 composite build 没有这个 task,那么这个配置就会报错。
起初,我被官方的文档误导的很深。为什么是在父 build.gradle.kts 中配置复合构建的 task 呢。为何不反过来,就这么灵机一动下,我完美的解决了这个问题。
完整的配置如下:
1 | plugins { |