Gradle:一尘不染的任务在需要时不会触发

use*_*020 7 java format gradle spotless

我遵循了 Spotless 插件的自述文件,并将以下内容包含在我的 build.gradle 中:

apply plugin: 'java'

spotless {
    java {
        eclipseFormatFile 'my-eclipse-format.xml' 
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行“gradlew build”时,我希望 Spotless 能够 a) 使用上述格式自动格式化我的代码;b) 做一个检查(即spotlessJavaCheck)来验证它发生了。

相反,我只让 b) 部分工作。我如何确保 a)(格式化)在我执行构建步骤时自动发生?我不想明确调用“gradlew spotlessApply build”,而只想调用“gradlew build”。

我尝试添加“build {dependsOn spotlessApply}”但它说“找不到属性spotlessApply”。

Ned*_*igg 6

为了将来参考,Spotless 的 GitHub 问题是询问 Spotless 的最佳地点。将所有内容集中在一处。

Spotless 的预期行为是让您知道spotlessCheck. 然后你spotlessApply自己手动运行。

以另一种方式做的问题是你永远不会知道错误的提交。如果我提交格式错误的代码,CI 服务器将使用 修复格式spotlessApply,然后确认格式已修复spotlessCheck,并说“这段代码很好!” 当实际上有人用错误的格式提交了一些东西时。

如果你仍然想要你想要的,你可以像这样完成它:

afterEvaluate {
    tasks.getByName('spotlessCheck').dependsOn(tasks.getByName('spotlessApply'))
}
Run Code Online (Sandbox Code Playgroud)