【问题标题】:Gradle: Spotless task not firing when neededGradle:一尘不染的任务在需要时不会触发
【发布时间】:2017-03-18 20:31:32
【问题描述】:

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

apply plugin: 'java'

spotless {
    java {
        eclipseFormatFile 'my-eclipse-format.xml' 
    }
}

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

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

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

【问题讨论】:

    标签: java gradle format spotless


    【解决方案1】:

    为了将来参考,Spotless' GitHub issues 是询问 Spotless 的最佳地点。将所有内容保存在一个地方。

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

    以另一种方式执行此操作的问题是您永远不会知道错误提交。如果我提交了格式错误的代码,CI 服务器将使用spotlessApply 修复格式,然后确认在spotlessCheck 中修复了格式,并说“这个代码很好!”当实际上有人以错误的格式提交了某些内容时。

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

    afterEvaluate {
        tasks.getByName('spotlessCheck').dependsOn(tasks.getByName('spotlessApply'))
    }
    

    【讨论】:

    • 这在完全微不足道的问题上过于频繁,因为一些检查非常固执己见,例如新线路。发现 CI 换行失败非常具有破坏性。重要的是,如果您偶尔在本地运行 gradle build,这最终会自行清理。这已经足够好了。最终结果是一样的:干净的代码。实际上,我也让 intellij 清理了我的代码,但它保留了换行符。
    猜你喜欢
    • 2021-03-14
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    相关资源
    最近更新 更多