使用 Prettier 格式化 Java 程式碼
1. 引言
團隊內部就程式碼風格達成一致可能是一項挑戰。因此,在提高程式碼可讀性和統一最佳實踐方面,自動程式碼格式化工具通常可以節省大量時間。
在本教程中,我們將探索在IntelliJ IDEA中使用[prettier](https://github.com/prettier)進行 Java 程式碼格式化。
2. Prettier 和 Java 支持
prettier是一款流行的、具有鮮明風格的程式碼格式化工具。與 Java 格式化工具不同,它不依賴特定的 IDE、語言或平台。因此,我們可以將同一個工具用於大型專案的多個部分,從而簡化工作流程並提高效率。
雖然prettier本身並不原生支援 Java ,但它透過外掛程式提供了額外的語言格式化功能。部分插件由prettier團隊維護,部分由社區維護。例如,針對 Java,我們有一個名為[prettier-java](https://github.com/jhipster/prettier-java)社群外掛程式。
3. 安裝
由於prettier是一個npm套件,我們需要確保已安裝Node和npm 。為了驗證這一點,讓我們檢查一下版本:
$ node --version
v24.13.0
$ npm --version
11.6.2
最佳實踐是在本地安裝npm套件,以確保與其他專案沒有版本衝突,並且團隊中的每個人都使用相同版本的套件。
接下來,我們執行npm init來建立一個package.json檔案:
$ npm init -y
這樣,我們就可以透過接受所有預設值來建立檔案。在這種情況下, -y是–yes的縮寫。
接下來,我們安裝兩個軟體套件prettier和prettier-java外掛:
$ npm install --save-dev --save-exact prettier prettier-plugin-java
這裡, –save-dev將軟體包保存為開發依賴項。而–save-exact保存目前版本號,不包含任何版本運算子。
產生的package.json檔案應具有特定結構:
{
"name": "java-test-project",
"version": "1.0.0",
"description": "",
"license": "ISC",
"author": "",
"type": "commonjs",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"devDependencies": {
"prettier": "3.8.1",
"prettier-plugin-java": "2.8.1"
}
}
值得注意的是, prettier-java至少需要 Node v10。
4. 在 IntelliJ IDEA 中進行設置
現在,讓我們來看看如何在 IntelliJ 中將prettier設定為外部工具。這樣,我們可以獲得最大的配置彈性,但可能需要花費更多時間。
然而,使用外部工具並非唯一選擇。從 v2020.1 版本開始,IntelliJ 原生支援prettier 。對於舊版本,我們提供了IntelliJ 外掛程式。但是,插件或內建工具的便利性也伴隨著配置和版本控制方面的限制。
在此設定中,我們在 Windows 系統上使用 IntelliJ IDEA 社群版 v2025.3。
4.1 建立 Prettier 配置文件
在專案根目錄中,我們建立一個名為.prettierrc.json的prettier設定文件,其中包含 Java 外掛設定:
{
"tabWidth": 2,
"plugins": ["prettier-plugin-java"]
}
這裡,我們也將製表tabWidth配置為兩個空格。如有需要,可新增其他配置。
4.2. 設定外部工具
若要在 IntelliJ 中設定外部工具,請依序選擇File > Settings > Tools External Tools 。然後,在子視窗工具列上,按一下Add按鈕。此時會彈出一個視窗:
在這個彈出視窗中,我們將名稱設為Prettier ,並跳過描述。
我們可以使用prettier's可執行檔路徑進行設定。但是,由於 Windows 系統上的node_modules\prettier\bin目錄下沒有可執行文件,只有一個.cjs文件,因此我們提供了一個與平台無關的解決方案。具體來說,我們使用npm自帶的[npx](https://docs.npmjs.com/cli/v9/commands/npx?v=true)來執行本地安裝的prettier 。
因此,我們在Program欄位中填入npx可執行檔路徑C:\Program Files\nodejs\npx.cmd 。
之後,我們在Arguments欄位中設定了對prettier呼叫:
prettier --config $ProjectFileDir$\.prettierrc.json --write $FilePathRelativeToProjectRoot$
$FilePathRelativeToProjectRoot$指的是目前開啟的文件,而–write參數則指示指令將變更直接輸出到指定的檔案。因此,當執行此工具時,它會直接格式化開啟的檔案。
最後,我們將Working directory欄位設定為$ProjectFileDir$ 。然後,點擊彈出視窗中的OK按鈕,最後單擊設定視窗中的Apply按鈕。
4.3 運行
現在設定已經完成,我們可以打開專案中的任何 Java 檔案並運行這個新工具。當然,我們先確保程式碼中存在樣式不一致的地方,以便prettier可以進行修復。
接下來,我們轉到Tools > External Tools ,然後選擇新建立的Prettier工具來運行它:
這樣應該可以執行指令並修復樣式問題。 IDE 的終端部分應該會顯示執行詳情。
為了更快地觸發該工具,我們可以建立一個自訂的 IntelliJ 捷徑。
5. 補充說明
其他流行的開發環境,例如 Eclipse 和 Visual Studio Code,設定方式類似,可以選擇使用外部工具配置或外掛程式。不過,Eclipse 的prettier外掛已經過時,不再維護。
需要注意的是,由於使用了多層獨立的工具(例如prettier 、社群插件、IDE 插件等),我們可能會遇到版本不匹配的問題,導致配置無法正常運作。因此,在確定可用的解決方案時,請務必確保所有工具的版本完全一致。
此外,由於 Java 外掛程式由社群維護,它通常會落後於語言更新。這在使用非原生工具時是常見的煩惱。
6. 總結
本文探討如何在 IntelliJ IDEA 中手動設定和使用prettier for Java。這使我們能夠透明地控製配置過程。