springboot~spring-javaformat插件惹的祸

起因

我们在写代码时,有时间代码过高,尤其是stream流的时间,可能有多个map,filter,sort组成,这样我们更希望看到的是一种可读性更好的风格

  • 我的代码是这样的
  • 于是我手动将map进行了换行,想让代码更清晰一些
  • 我编码之后,添加了手动换行,我习惯上会进行代码统一格式化,idea里的ctrl+alt+L,这时,我发现我的换行没了,又回去了
  • 于是我问了chatgpt,是否是自己配置的原因
在 IntelliJ IDEA 中手动修改代码对齐并按回车换行后,如果在进行自动格式化后发现修改的部分被恢复,这可能是由于以下几种情况导致的:

1. 自动格式化设置:检查你的 IntelliJ IDEA 的自动格式化设置,确保它与你期望的格式化风格一致。你可以在 "Preferences"(或 "Settings")菜单中的 "Editor" -> "Code Style" 下找到相应的设置。确保选择了适合你的编码风格的选项,并且没有启用不希望的格式化功能(例如,"Reformat on file save")。

2. 代码风格设置:如果你手动修改的代码与当前项目的代码风格设置不一致,自动格式化可能会覆盖你的更改。在 "Preferences"(或 "Settings")菜单中的 "Editor" -> "Code Style" 中,选择适合你的项目的代码风格,并确保与你手动修改的代码一致。

3. 编辑器行为设置:在 IntelliJ IDEA 的 "Preferences"(或 "Settings")菜单中,检查 "Editor" -> "General" -> "Smart Keys" 设置。有些选项,如 "Reformat block on typing '}'" 或 "Keep when formatting",可能会影响自动格式化后的代码。

4. 版本控制:如果你的项目使用了版本控制系统(如 Git),在进行提交或拉取操作时,IntelliJ IDEA 可能会根据版本控制的规则自动格式化代码。这可能导致你手动修改的部分被恢复为代码库中的规范格式。

请检查上述设置,并根据你的需求进行适当的调整,以确保代码格式化的行为与你期望的一致。如果问题仍然存在,请提供更多的上下文信息,例如你手动修改的代码示例和你的自动格式化设置,以便更好地帮助你解决问题。
  • 最后,我想起来,我使用了spring格式统一的代码格式插件spring-javaformat,这个插件有两个时机会触发:
    • build项目时,会通过spring-javaformat去检查你的代码格式,不符合要求会提示你
    • 在编辑单个文件时,使用ctrl+alt+L进行代码格式化时,这个插件也会把你代码更新成符合它的格式
  • 我把这个插件删除后,再执行一下格式化,问题就解决了,不过,我最后还是把spring-javaformat插件装上了,因为这是一种统一的风格,我们应该去适应它和遵守它,因为它是一个标准化的方案

Spring Java Format

Spring Java Format是一个用于在Spring项目中格式化Java代码的插件。它是基于Google的Java代码格式化工具(google-java-format)开发的,专门用于与Spring框架的最佳实践相匹配的代码格式化。

Spring Java Format插件提供了与IDE(集成开发环境)集成的能力,例如在Eclipse和IntelliJ IDEA中使用。它可以自动格式化Java代码,确保代码风格的一致性和可读性。

使用Spring Java Format插件,您可以定义代码格式化规则,例如缩进大小、行长度、空格使用等。它还提供了一个命令行工具,可以在构建过程中自动格式化代码。

要在Spring项目中使用Spring Java Format插件,您需要将其添加到项目的构建配置文件中。具体步骤可能因您使用的构建工具而有所不同。以下是一个使用Maven构建的示例:

  1. 在项目的pom.xml文件中,添加插件依赖:
<build>
    <plugins>
        <plugin>
            <groupId>io.spring.javaformat</groupId>
            <artifactId>spring-javaformat-maven-plugin</artifactId>
            <version>0.0.6</version>
            <executions>
                <execution>
                    <goals>
                        <goal>apply</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  1. 对java8的支持
    在项目根目录添加文件.springjavaformatconfig,文件内容如下
java-baseline=8
  1. 在命令行中运行以下命令,将项目中的Java代码格式化:
mvn spring-javaformat:apply #单个文件里,使用`ctrl+alt+l`,也会使用spring-javaformat进行格式化,这一点很方便的

这将使用Spring Java Format插件对项目中的Java代码进行格式化。

请注意,具体的插件版本号可能会有所不同,请根据您使用的版本进行相应的配置。

  1. 在mvn install之前,自动进行spring-javaformat:apply,这个配置将是非常重要的,因为当你的代码格式不合法时,你是无法进行构建的,需要先把代码格式调整后,才能构建,而添加如下配置后,在构建之前,将自动进行apply操作,请重点看goals节点的配置:
<plugin>
    <groupId>io.spring.javaformat</groupId>
    <artifactId>spring-javaformat-maven-plugin</artifactId>
    <version>0.0.35</version>
    <executions>
        <execution>
            <goals>
                <goal>apply</goal>
            </goals>
            <phase>validate</phase>
        </execution>
    </executions>
</plugin>

除了Maven插件之外,Spring Java Format还提供了Gradle插件(spring-javaformat-gradle-plugin),您可以在Gradle项目中使用相似的方式进行配置和使用。

希望这可以帮助您了解Spring Java Format插件及其在Spring项目中的使用方式。如果您有任何其他问题,请随时提问!

posted @ 2023-06-27 14:19  张占岭  阅读(1107)  评论(0编辑  收藏  举报