2025年2月8日土曜日

gradle で管理しているプロジェクトに google-java-format を導入する方法

gradle で管理しているプロジェクトに google-java-format を導入する方法

概要

google-java-format は Java のコードをフォーマットしてくれるツールです
CLI でも使えますが別途インストールしたりプロジェクトごとに管理できないので今回は gradle 配下でインストールし実行する方法を紹介します

環境

  • macOS 15.2
  • Java 21.0.5
  • google-java-format 1.17.0

build.gradle の編集

主に2箇所追記します

plugins

まずは spotless というプラグインをインストールします

plugins {
	id 'com.diffplug.spotless' version '7.0.2'
}

spotless

format 用の定義を追加します
Java21 の場合は google-java-format は 1.17.0 以下を指定します

設定でいろいろなフォーマットが可能です
インデントはスペースではなくタブにしたりヘッダのコピーライト文も自動で追加したりできます

spotless {
    format 'misc', {
        // define the files to apply `misc` to
        target '*.gradle', '.gitattributes', '.gitignore'

        // define the steps to apply to those files
        trimTrailingWhitespace()
        leadingTabsToSpaces()
        endWithNewline()
    }
    java {
        // don't need to set target, it is inferred from java

        // apply a specific flavor of google-java-format
        googleJavaFormat('1.17.0').aosp().reflowLongStrings().skipJavadocFormatting()
        // fix formatting of type annotations
        formatAnnotations()
        // make sure every file has the following copyright header.
        // optionally, Spotless can set copyright years by digging
        // through git history (see "license" section below)
        licenseHeader '/* (C)$YEAR */'
    }
}

動作確認

  • ./gradlew spotlessApply

これで自動的にフォーマットされます

Tips

emacs で lsp-java を使っている際にエディタ側で自動でフォーマットされてしまうのを防ぐ方法は以下です

(setq lsp-java-format-enabled nil)
(setq lsp-java-format-on-type-enabled nil)

最後に

これでコードのフォーマットは統一することができます
エディタ側には google-java-format 用の linter がほしいところです

参考サイト

0 件のコメント:

コメントを投稿