You can let pre-commit hook trigger formatter for files staged for commit.

git-code-format-maven-plugin uses google-java-format formatter and can install client-side pre-commit git hook during compile phase. It requires Maven 3.5.x, which should be enforced.

<build>
  <plugins>
    <plugin>
      <groupId>com.cosium.code</groupId>
      <artifactId>git-code-format-maven-plugin</artifactId>
      <version>VERSION</version>
      <executions>
        <execution>
          <goals>
            <goal>install-hooks</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    <plugin>
      <artifactId>maven-enforcer-plugin</artifactId>
      <version>VERSION</version>
      <executions>
        <execution>
          <goals>
            <goal>enforce</goal>
          </goals>
          <configuration>
            <rules>
              <requireMavenVersion>
                <version>[3.5.4,)</version>
              </requireMavenVersion>
            </rules>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

Point to standalone Maven in IDE as git-code-format-maven-plugin does not play along nicely with embedded Maven.

mvn compile to get hook installed. For IDEA, that's it.

As git-code-format-maven-plugin only formats changed files (which is good), it is probably good to format whole project upfront once (mvn git-code-format:format-code -Dgcf.globPattern=**/*).

Workaround for Eclipse

Because of a bug in EGit, which sometimes ignores Git hooks completely, developers using Eclipse on Windows should have Cygwin in PATH. An empty cygpath.exe will do. Run 'Command Prompt' as a administrator and execute C:\>echo "" > /"Program Files"/Git/bin/cygpath.exe (kudos to hook is not working eclipse egit client).

Reboot.

A note on java import statements ordering

Optimise imports or reformat in IDE or reformat with plugins, can lead to changes in imports ordering. A nasty surprise if an older version of git-code-format-maven-plugin is being used together with fmt-maven-plugin (to format or validate code later in CI, for example).

  • git-code-format-maven-plugin will sort imports (since version 1.20)
  • fmt-maven-plugin will always sort imports
  • googleformatter-maven-plugin can optionally sort imports (not per default)
Answer from zziga on Stack Overflow
🌐
Maven Repository
mvnrepository.com › artifact › com.google.googlejavaformat › google-java-format
Maven Repository: com.google.googlejavaformat » google-java-format
July 30, 2026 - A Java source code formatter that follows Google Java Style. ... aar android apache api arm assets build build-system bundle client clojure cloud config cran data database eclipse example extension framework github gradle groovy io ios javascript jvm kotlin library logging macos maven mobile ...
🌐
GitHub
github.com › google › google-java-format
GitHub - google/google-java-format: Reformats Java source code to comply with Google Java Style. · GitHub
August 14, 2026 - The formatter can be used in software which generates java to output more legible java code. Just include the library in your maven/gradle/etc. configuration. google-java-format uses internal javac APIs for parsing Java source.
Author: google
Top answer
1 of 4
8

You can let pre-commit hook trigger formatter for files staged for commit.

git-code-format-maven-plugin uses google-java-format formatter and can install client-side pre-commit git hook during compile phase. It requires Maven 3.5.x, which should be enforced.

<build>
  <plugins>
    <plugin>
      <groupId>com.cosium.code</groupId>
      <artifactId>git-code-format-maven-plugin</artifactId>
      <version>VERSION</version>
      <executions>
        <execution>
          <goals>
            <goal>install-hooks</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    <plugin>
      <artifactId>maven-enforcer-plugin</artifactId>
      <version>VERSION</version>
      <executions>
        <execution>
          <goals>
            <goal>enforce</goal>
          </goals>
          <configuration>
            <rules>
              <requireMavenVersion>
                <version>[3.5.4,)</version>
              </requireMavenVersion>
            </rules>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

Point to standalone Maven in IDE as git-code-format-maven-plugin does not play along nicely with embedded Maven.

mvn compile to get hook installed. For IDEA, that's it.

As git-code-format-maven-plugin only formats changed files (which is good), it is probably good to format whole project upfront once (mvn git-code-format:format-code -Dgcf.globPattern=**/*).

Workaround for Eclipse

Because of a bug in EGit, which sometimes ignores Git hooks completely, developers using Eclipse on Windows should have Cygwin in PATH. An empty cygpath.exe will do. Run 'Command Prompt' as a administrator and execute C:\>echo "" > /"Program Files"/Git/bin/cygpath.exe (kudos to hook is not working eclipse egit client).

Reboot.

A note on java import statements ordering

Optimise imports or reformat in IDE or reformat with plugins, can lead to changes in imports ordering. A nasty surprise if an older version of git-code-format-maven-plugin is being used together with fmt-maven-plugin (to format or validate code later in CI, for example).

  • git-code-format-maven-plugin will sort imports (since version 1.20)
  • fmt-maven-plugin will always sort imports
  • googleformatter-maven-plugin can optionally sort imports (not per default)
2 of 4
1

In order to run this formatter after each developer commit, you will have to first have a Jenkins commit hook in place, that will trigger a Jenkins build. One of the phases of the build, should execute the fmt-maven-plugin's (or any others) check functionality in order to ensure that the code is properly formatted.

Adding a webhook

First thing to do is add a webhook that will trigger a Jenkins build after every commit in your git repository. You can find how to do this here. For Gitlab specific instructions, this post from medium may be helpful.

Executing the check

This can be done by executing the check goal on the fmt-maven-plugin

Maven acceps either <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal> as a means of calling a plugin goal, so for your specific problem, you can run:

mvn fmt:check

That being said, you will have to add a Jenkins build step, that will run the mentioned command. Step 5 from this tutorial shows you how to add a build step.

Hope that this actually helps :D

🌐
GitHub
github.com › talios › googleformatter-maven-plugin
GitHub - talios/googleformatter-maven-plugin: Plugin for the Apache Maven build system to reformat source files. · GitHub
A simple Apache Maven plugin to reformat a projects source/test-sources using the google-java-format project to conform with the Google Code Style Guide.
Author: talios
🌐
Maven Repository
mvnrepository.com › artifact › com.google.googlejavaformat
Maven Repository: com.google.googlejavaformat
A Java source code formatter that follows Google Java Style. ... aar android apache api arm assets build build-system bundle client clojure cloud config data database eclipse example extension framework github gradle groovy io ios javascript jvm kotlin library logging maven mobile model module ...
🌐
GitHub
github.com › google › google-java-format › issues › 69
Maven plugin · Issue #69 · google/google-java-format
August 19, 2016 - Support using Google Java Format as part a build in Maven thru a plugin. Google coding styles helps a great deal to apply a common scheme to a code repository. Although, there are ways to share/aut...
Author: google
🌐
GitHub
gist.github.com › sandeepkv93 › 51db90f0e288cf21ca7ff34aa143d828
Automated Java Code Formatting with Maven using google-java-format · GitHub
Google Java Format (google-java-format): Google's Java code formatter that enforces Google Java Style · Spotify's fmt-maven-plugin: A Maven plugin that integrates google-java-format into the Maven build lifecycle
🌐
Google
android.googlesource.com › platform › external › google-java-format › + › 8612b8937d1dde47f0078918ccda945310a65bdc › README.md
google-java-format
The plugin adds a google-java-format formatter implementation that can be configured in Window > Preferences > Java > Code Style > Formatter > Formatter Implementation. ... Cosium/maven-git-code-format: A maven plugin that automatically deploys google-java-format as a pre-commit git hook.
🌐
GitHub
github.com › harvanir › maven-google-java-format
GitHub - harvanir/maven-google-java-format
Run mvn com.coveo:fmt-maven-plugin:format command to format all the java files (src & test).
Author: harvanir
Find elsewhere
🌐
GitHub
github.com › google › google-java-format › blob › master › pom.xml
google-java-format/pom.xml at master · google/google-java-format
<artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${java.version}</source> <target>${java.version}</target> <encoding>UTF-8</encoding> <compilerArgs> <!-- compile-time arguments for google-java-format --> <arg>-XDcompilePolicy=simple</arg> <arg>--should-stop=ifError=FLOW</arg> <arg>-Xplugin:ErrorProne</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
Author: google
🌐
Maven Repository
mvnrepository.com › artifact › com.google.googlejavaformat › google-java-format-eclipse-plugin
Maven Repository: com.google.googlejavaformat » google-java-format-eclipse-plugin
A Java source code formatter that follows Google Java Style. ... aar amazon android apache api arm assets build build-system bundle client clojure cloud config cran data database eclipse example extension framework github gradle groovy io ios javascript jvm kotlin library logging maven mobile ...
🌐
Medium
medium.com › @nirav-shah › code-formatting-using-spotless-google-java-format-for-java-maven-projects-with-git-pre-commit-860d6c15bf7c
Code Formatting Using Spotless & Google Java Format for Java Maven Projects with Git Pre Commit Hooks | by Nirav Shah | Medium
September 21, 2023 - We will use a pre commit hook to execute a spotless maven goal which will format a code before commiting it to repository. You can find hooks inside .git/hooks. Technogoloy & Plugin versions that I have used for article are, java 1.8, spotless maven plugin version 2.9.0, Google Java Formatter (version 1.7 which is supported for java 1.8), Git Build Hook Maven Plugin.
🌐
Google
android.googlesource.com › platform › external › google-java-format
platform/external/google-java-format - Git at Google
The formatter can be used in software which generates java to output more legible java code. Just include the library in your maven/gradle/etc. configuration. google-java-format uses internal javac APIs for parsing Java source.
🌐
Medium
aru-sha4.medium.com › java-check-style-and-formatting-using-maven-a1a1b4e6e10a
Java Check-style and Formatting using Maven | by Arushi Sharma | Medium
January 7, 2020 - One of these plugins is the googleformatter-maven-plugin that uses google-java-format dependancy.