springboot~spring-javaformat插件惹的禍
起因
我們(men)在(zai)寫代(dai)碼(ma)(ma)時(shi),有時(shi)間(jian)代(dai)碼(ma)(ma)過高(gao),尤其是(shi)(shi)stream流(liu)的時(shi)間(jian),可(ke)能(neng)有多個map,filter,sort組成,這樣我們(men)更希望看到的是(shi)(shi)一種可(ke)讀性(xing)更好的風格
- 我的代碼是這樣的

- 于是我手動將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是一(yi)個(ge)用于(yu)在Spring項目中格式(shi)化(hua)Java代碼的插件。它是基于(yu)Google的Java代碼格式(shi)化(hua)工具(google-java-format)開發(fa)的,專(zhuan)門用于(yu)與Spring框架的最佳實踐(jian)相(xiang)匹(pi)配的代碼格式(shi)化(hua)。
Spring Java Format插件提供了與IDE(集成開發環境)集成的(de)能力,例如在Eclipse和IntelliJ IDEA中使用(yong)。它(ta)可(ke)以自動(dong)格(ge)式化Java代碼,確保代碼風格(ge)的(de)一致性(xing)和可(ke)讀(du)性(xing)。
使用Spring Java Format插件,您可(ke)以定義代(dai)碼格(ge)(ge)式化(hua)規則,例如縮進大(da)小、行(xing)(xing)長度、空格(ge)(ge)使用等。它(ta)還提供(gong)了一個命(ming)令(ling)行(xing)(xing)工具,可(ke)以在構(gou)建過程中自動格(ge)(ge)式化(hua)代(dai)碼。
要在Spring項目(mu)中(zhong)使(shi)用(yong)Spring Java Format插件(jian),您需(xu)要將其添加到項目(mu)的(de)構(gou)建(jian)配置(zhi)文件(jian)中(zhong)。具體步驟(zou)可能因您使(shi)用(yong)的(de)構(gou)建(jian)工(gong)具而有所不同(tong)。以(yi)下是一(yi)個使(shi)用(yong)Maven構(gou)建(jian)的(de)示例:
- 在項目的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>
- 對java8的支持
在項目根目錄添加文件.springjavaformatconfig,文件內容如下
java-baseline=8
- 在命令行中運行以下命令,將項目中的Java代碼格式化:
mvn spring-javaformat:apply #單個文件里,使用`ctrl+alt+l`,也會使用spring-javaformat進行格式化,這一點很方便的
這將使用Spring Java Format插件對項(xiang)目中的Java代(dai)碼進行格(ge)式(shi)化(hua)。
請注(zhu)意,具體的(de)(de)插(cha)件版本號可能會有所(suo)不同,請根(gen)據您使用的(de)(de)版本進行相應的(de)(de)配置。
- 在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項目(mu)中使(shi)用相似的(de)方式進行配(pei)置和使(shi)用。
希望這可以幫助您了解Spring Java Format插(cha)件(jian)及(ji)其在Spring項目中(zhong)的使用方式(shi)。如果您有任何(he)其他問(wen)題(ti),請隨(sui)時提問(wen)!

