Spotless代码格式化工具
1.为什么需要
在一些大型项目或开源项目,由于开发人员太多,导致各个代码格式不统一。会让整体项目的代码可读性变差,那么如何可以统一代码格式呢?
使用Spotless就可以完成
2.是什么
Spotless 是支持多种语言的代码格式化工具(自动或手动方式均可),支持 Maven 和 Gradle 以 Plugin 的形式构建。目前 github 已经有 4000+ 开源项目在使用 Spotless 进行格式化代码
3.github地址
https://github.com/diffplug/spotless/tree/main/plugin-maven
4.代码格式化方式
Spotless 提供了多种 Java 代码格式化方式,如 googleJavaFormat、eclipse、prettier 等
5.使用方式
- Maven插件整合
- Gradle插件整合
6.Maven整合Spotless
目标
自动为代码添加 licenseHeader 和格式化代码
步骤
- 在父POM文件中引入插件依赖
- 创建代码格式文件
- 手动执行代码格式化
- 将格式化绑定到 Maven 生命周期
在父POM文件中引入插件依赖
<!-- spotless插件 -->
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>2.22.1</version>
<configuration>
<java>
<eclipse>
<file>dev-support/spotless_formatter.xml</file>
</eclipse>
<!-- 我这里没添加头要是需要就添加上 -->
<!-- <licenseHeader>-->
<!-- <file>dev-support/license-header</file>-->
<!-- </licenseHeader>-->
</java>
</configuration>
</plugin>
创建代码格式化文件
在 dev-support 中创建 spotless_formatter.xml 文件,用于指定 Eclipse 代码格式化的设置
具体内容省略,请自行百度或谷歌
手动执行代码格式化
经过上述步骤,我们就可以执行以下命令来检查 Java 代码是否符合规范并进行格式化:
# 查看哪些代码不符合代码格式
mvn spotless:check
# 代码格式化
mvn spotless:apply
当然,我们也可以直接在 IDEA 中使用 Maven 插件来执行这些操作。只需点击一下,即可完成整个过程
将格式化绑定到 Maven 生命周期
在实际应用中,我选择将 Spotless 格式化操作绑定到 compile 阶段,这样当执行 mvn install 时,代码会自动进行格式化
以下是在 POM 文件中配置的相关部分:
<!--此插件用于格式化代码,mvn spotless:check mvn spotless:apply -->
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>${spotless-maven-plugin.version}</version>
<configuration>
<java>
<eclipse>
<file>dev-support/spotless_formatter.xml</file>
</eclipse>
<licenseHeader>
<file>dev-support/license-header</file>
</licenseHeader>
</java>
</configuration>
<executions>
<execution>
<goals>
<goal>apply</goal>
</goals>
<phase>compile</phase>
</execution>
</executions>
</plugin>
补充头文件内容
在 dev-support 文件夹中创建头文件 license-header,内容如下:
/*
* DailyMart is a microservice-based e-commerce project implemented
* with Domain-Driven Design (DDD).
* Copyright (C) 2023 Java日知录
*
* ...
*/
这样,当使用 Spotless 进行代码格式化时,会为所有代码文件添加这段头信息。请注意,在头文件后面留一个空行,以确保 licenseHeader 与 Java 代码的 package 之间有足够的间隔,以保持代码的美观性
7.集成IDEA插件完成单文件格式化
为什么需要
如果开发者在编写代码时想要检查单个文件是否符合规范,执行 mvn spotless:check 或 mvn spotless:apply 或许稍显繁琐,因为默认格式化范围是整个项目
但是,我们可以借助 IDEA 的插件 Adapter for Eclipse Code Formatter 来实现单个文件的格式化。只需将我们的自定义代码文件替换原文件即可
安装
设置
修改代码格式化文件,将自定义的代码风格导入
这样,您就可以使用 IDEA 的快捷键对单个文件进行代码格式化,同时使用的是您自定义的代码风格