Automatically format your Java files using Google Java Style guidelines.
This action automatically downloads the latest release of the Google Java Format program.
This action can format your files and push the changes, or just check the formatting without committing anything.
You must checkout your repository with actions/checkout
before calling this action (see the example).
Format all Java files in the repository and commit the changes:
name: Format
on:
push:
branches: [ master ]
jobs:
formatting:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4 # v2 minimum required
- uses: axel-op/googlejavaformat-action@v3
with:
args: "--skip-sorting-imports --replace"
# Recommended if you use MacOS:
# github-token: ${{ secrets.GITHUB_TOKEN }}
Check if the formatting is correct without pushing anything:
name: Format
on: [ push, pull_request ]
jobs:
formatting:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4 # v2 minimum required
- uses: axel-op/googlejavaformat-action@v3
with:
args: "--set-exit-if-changed"
Print the diff of every incorrectly formatted file, and fail if there is any:
name: Format
on: [ push, pull_request ]
jobs:
formatting:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4 # v2 minimum required
- uses: axel-op/googlejavaformat-action@v3
with:
args: "--replace"
skip-commit: true
- name: Print diffs
run: git --no-pager diff --exit-code
None of these inputs is required, but you can add them to change the behavior of this action.
Recommended if you execute this action from GitHub-hosted MacOS runners or from self-hosted runners. Because of IP-address based rate limiting, calling the GitHub API from any small pool of IPs, including the GitHub-hosted MacOS runners, can result in an error. To overcome this, provide the GITHUB_TOKEN
to authenticate these calls. If you provide it, it will also be used to authenticate the commits made by this action.
Set this input to use a specific version of Google Java Format. For example: 1.7
, 1.8
...
A pattern to match the files to format. The default is **/*.java
, which means that all Java files in your repository will be formatted.
A pattern to match the files to be ignored. Optional.
Set to true
if you don't want the changes to be committed by this action. Default: false
.
You can specify a custom commit message. Default: Google Java Format
.
The arguments to pass to the Google Java Format executable.
By default, only --replace
is used.
Options:
-i, -r, -replace, --replace
Send formatted output back to files, not stdout.
--aosp, -aosp, -a
Use AOSP style instead of Google Style (4-space indentation).
--fix-imports-only
Fix import order and remove any unused imports, but do no other formatting.
--skip-sorting-imports
Do not fix the import order. Unused imports will still be removed.
--skip-removing-unused-imports
Do not remove unused imports. Imports will still be sorted.
--skip-reflowing-long-strings
Do not reflow string literals that exceed the column limit.
--skip-javadoc-formatting
Do not reformat javadoc.
--dry-run, -n
Prints the paths of the files whose contents would change if the formatter were run normally.
--set-exit-if-changed
Return exit code 1 if there are any formatting changes.
--lines, -lines, --line, -line
Line range(s) to format, like 5:10 (1-based; default is all).
--offset, -offset
Character offset to format (0-based; default is all).
--length, -length
Character length to format.
--help, -help, -h
Print this usage statement.
--version, -version, -v
Print the version.
@<filename>
Read options and filenames from file.
The --lines, --offset, and --length flags may be given more than once.
The --offset and --length flags must be given an equal number of times.
If --lines, --offset, or --length are given, only one file may be given.
Note:
- If you add
--dry-run
or-n
, no commit will be made. - The argument
--set-exit-if-changed
will work as expected and this action will fail if some files need to be formatted.