Skip to content

Releases: google/google-java-format

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 13:04

google-java-format 2.0.0 replaces the formatter's layout engine, and makes some improvements to lambda formatting (#19). This release also adds an optional cleanup pass that makes small non-whitespace changes, which is enabled by default.

Because of these changes, 2.0.0 reformats more existing code than a typical release. We recommend reformatting your codebase in a single commit when upgrading.

Formatting changes

  • A lambda that is the only argument of a call is now kept on the same line as the call, instead of starting on a new line with an extra level of indentation (#19):

    executor.submit(() -> {
      doSomething();
    });
  • Text blocks are now indented as part of the main formatting pass, so their indentation is correct even with --skip-reflowing-long-strings.

  • Fixed indentation of comments after assert, enum constants, for initializers, try resources, multi-catch clauses, and type arguments.

Cleanups

  • Added a --cleanup flag, enabled by default, for small non-whitespace changes:

    • removing redundant semicolons
    • removing empty annotation parentheses (@Foo() → @Foo)
    • removing parentheses around a single untyped lambda parameter ((x) -> ... → x -> ...) (#762)

    Cleanups only apply to the ranges being formatted. Use --cleanup=false to only change whitespace (and the existing --skip-sorting-imports, --skip-removing-unused-imports, and --skip-reordering-modifiers flags for the other non-whitespace changes).

  • When formatting a range with --lines or --offset and cleanups enabled, unformatted statements outside the range are re-indented to match the formatted output, so an edit that adds or removes a level of nesting doesn't leave the surrounding code misaligned. Blank lines left behind by cleanups are removed.

Configuration

  • --max-line-length=N sets the column limit (default 100) (#425). (This flag was introduced in v1.37.0)

Language support

Javadoc

  • Strip trailing asterisks before */ (#67).
  • Preserve relative indentation in <pre>{@code ...} blocks without leading *.
  • Join hyphenated words broken across lines.

Long strings

  • When formatting a range with --lines or --offset, only long string literals in the requested range are reflowed (#1114).
  • Escaped backslashes (e.g. \\t in a Windows path or a regular expression) are no longer split when reflowing long string literals (#1186, #1253, #1439).
  • Failures while reflowing long strings are reported as errors instead of crashing or hanging the CLI (#1439).

Other fixes

  • Fixed formatting in the Eclipse plugin, which failed with NoClassDefFoundError since 1.36.0 because the plugin didn't bundle commonmark (#1428).
  • The error for combining --dry-run with --replace now names the right flag (#1094).

API changes

  • JavaFormatterOptions.Builder.cleanup(boolean) controls the new cleanup pass, and defaults to true. This means Formatter.formatSource now makes the non-whitespace changes listed above by default. Integrations that format code the user is editing, e.g. format-on-save in an IDE, should set cleanup(false); the IntelliJ plugin does this.
  • Formatter.getFormatReplacements is now strictly whitespace-only: it no longer reorders modifiers, and never applies cleanups. Use Formatter.formatSource(String, Collection<Range<Integer>>) to format character ranges with modifier reordering.
  • JavaFormatterOptions.Style became a record in 1.37.0. The enum-compatible methods, such as Style.valueOf(String), have been restored for tools like Spotless that called them (#1478).
  • The previous layout engine's classes (com.google.googlejavaformat.Doc, OpsBuilder, and related types) are no longer used to format Java, but are still included for other formatters that build on them.

Full Changelog: v1.37.0...v2.0.0

v1.37.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 12:05

Changes:

  • Add a --max-line-length flag (#425)
  • Markdown javadoc formatting improvements (c51d691, ecba4fb)
  • Add --google-style and --style=google|aosp flags for easier switching between Google and AOSP style (#1415)

Full Changelog: v1.36.1...v1.37.0

v1.36.1

Choose a tag to compare

@github-actions github-actions released this 30 Jul 18:46

What's Changed

  • Fix an issue with formatting indented list items.
  • Handle blank lines before and within Markdown lists more accurately.

Full Changelog: v1.36.0...v1.36.1

v1.36.0

Choose a tag to compare

@github-actions github-actions released this 29 Jul 19:25

Changes:

  • Significant improvements to Markdown Javadoc support

Full Changelog: v1.35.0...v1.36.0

v1.35.0

Choose a tag to compare

@github-actions github-actions released this 03 Mar 09:42

Changes:

  • Improved support for latest JDK 27 EA builds (075e025)

Full Changelog: v1.34.1...v1.35.0

v1.34.1

Choose a tag to compare

@github-actions github-actions released this 04 Feb 19:43

Changes:

  • Fix reflection configuration for GraalVM native binaries (#1327)

Full Changelog: v1.34.0...v1.34.1

v1.34.0

Choose a tag to compare

@github-actions github-actions released this 03 Feb 09:37

Changes:

Full Changelog: v1.33.0...v1.34.0

v1.33.0

Choose a tag to compare

@github-actions github-actions released this 05 Dec 08:39

This release contains no formatting changes.

The constructors of the com.google.googlejavaformat.java.filer.FormattingFiler API are now deprecated, and the new factory method FormattingFiler#create(ProcessingEnvironment) should be used instead.

Full Changelog: v1.32.0...v1.33.0

v1.32.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 10:26

Changes:

  • Add support for AOSP formatting in the Eclipse plugin (#179)

Full Changelog: v1.31.0...v1.32.0

v1.31.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 10:27

This release contains no formatting changes.

Changes:

  • Add a SnippetFormatter(JavaFormatterOptions) constructor (8c30268)

Full Changelog: v1.30.0...v1.31.0