Repolode
diffplug

diffplug/spotless

面向 Gradle 和 Maven 的构建插件,可统一运行多种语言和文件类型的代码格式化工具。

Star
5,720
Fork
565
未关闭 Issue
251
最近提交
5天前

这是什么?

Spotless 是一个构建工具插件,可对项目源码执行代码格式化,并在文件未达到格式要求时让构建失败。它支持 Gradle 和 Maven,SBT 插件由外部维护。运行 spotlessApply 可自动修复不规范的文件,运行 spotlessCheck 则只做检查,便于在 CI 中强制统一代码风格。

它覆盖的语言包括 Java、Kotlin、Groovy、Scala、JavaScript、TypeScript、SQL、YAML、Markdown、Python、C++ 和 Shell 等。项目封装了 google-java-format、ktlint、Prettier、Black、clang-format 等常用格式化工具,并提供正则替换、去除行尾空白、许可证头、执行任意命令等通用步骤。

此外,Spotless 处理了集成中的细节问题,包括幂等性检查、编码与换行符处理,支持基于 Git 只格式化变更文件(ratchet),并兼容 Gradle 构建缓存和配置缓存。

核心功能

  • 01通过 spotlessCheck 和 spotlessApply 任务检查并自动修复格式。
  • 02支持 Java、Kotlin、Groovy、Scala、JavaScript、TypeScript、SQL、YAML、Markdown 等多种语言。
  • 03封装 google-java-format、ktlint、Prettier、Black、clang-format 等常用格式化工具。
  • 04可基于 Git 引用(如 origin/main)只处理发生变化的文件。
  • 05提供正则替换、去除行尾空白、许可证头等通用格式化步骤。

适用场景

  • 在 CI 中统一多语言 Java 或 Kotlin 单体仓库的代码风格。
  • 本地开发时只格式化当前分支相对主干有改动的文件。
  • 在构建中为所有源文件统一添加许可证头或调整导入顺序。
  • 用同一套工具同时格式化 SQL、YAML、Markdown 与应用代码。

快速上手

  1. 1

    按照 plugin-gradle 或 plugin-maven 指南,将 Spotless 插件添加到你的 Gradle 或 Maven 构建中

  2. 2

    使用 Gradle 应用格式化

    ./gradlew spotlessApply
  3. 3

    使用 Maven 应用格式化

    mvn spotless:apply

使用前须知

  • 官方支持仅限 Gradle 和 Maven;SBT 集成为外部项目。
  • 功能和格式化器的支持因构建工具而异,部分步骤只能在 Gradle 上使用。

收录于专题

标签

常见问题

spotless 是什么?
面向 Gradle 和 Maven 的构建插件,可统一运行多种语言和文件类型的代码格式化工具。 Spotless 是一个构建工具插件,可对项目源码执行代码格式化,并在文件未达到格式要求时让构建失败。它支持 Gradle 和 Maven,SBT 插件由外部维护。运行 spotlessApply 可自动修复不规范的文件,运行 spotlessCheck 则只做检查,便于在 CI 中强制统一代码风格。
spotless 可以免费使用吗?用的什么许可证?
spotless 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
spotless 还在维护吗?
活跃维护中。spotless 最近一次提交是在 2026年11月2日。
spotless 适合用来做什么?
在 CI 中统一多语言 Java 或 Kotlin 单体仓库的代码风格。 本地开发时只格式化当前分支相对主干有改动的文件。 在构建中为所有源文件统一添加许可证头或调整导入顺序。 用同一套工具同时格式化 SQL、YAML、Markdown 与应用代码。
spotless 怎么安装和运行?
按照 plugin-gradle 或 plugin-maven 指南,将 Spotless 插件添加到你的 Gradle 或 Maven 构建中 使用 Gradle 应用格式化: ./gradlew spotlessApply 使用 Maven 应用格式化: mvn spotless:apply
在哪里获取 spotless?
源代码和安装说明在 GitHub 上:https://github.com/diffplug/spotless

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目