Skip to content

v4.0.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 07:39
· 262 commits to main since this release

Noteworthy changes from v3

  • Java 17 is now a minimum requirement to use this plugin. This decision has been made for several reasons:
    • Oracle's free JDK 11 support has finished.
    • Project dependencies require Java 17 on the newest versions:
      • AssertJ v4.0
      • Checkstyle 12
      • JUnit 6
    • Spring now requires Java 17.
    • Quarkus now requires Java 17.
    • Micronaut now requires Java 17.
    • Jackson now requires Java 17.
    • Maven 4.0 will require Java 17 once released.
  • Maven 3.9 is now a minimum requirement rather than Maven 3.8 (and previous internal workarounds to support Maven 3.8 have been removed).
    • We now rely on Eclipse Aether and Eclipse Sisu internals for some aspects that were not previously available on Maven 3.8, which aligns us with behaviour in other Maven plugins moving forwards. Users should expect no visible behaviour change here.

Non-breaking changes

  • embedSourcesInClassOutputs is now true rather than false, to enable improved semantics for importing dependencies within
    protobuf sources. Users who wish for this functionality to remain disabled can explicitly disable it within the plugin
    configuration.
  • <protocVersion> is now an alias for <protoc> rather than vice versa. Users can continue to use the old name until v5 but are encouraged to update.

Deprecated attribute removal

Attributes in goals that are marked as deprecated have been removed:

  • Failing on invalid dependencies - we will always ignore invalid dependencies, leaving the user to verify the integrity of the rest of their project via Maven warnings. This is already the default, but users almost never have full control of their entire dependency graph, and full project level validation is out of scope for this Maven plugin.

Removed functionality

Some functionality that is not deemed useful has been removed:

  • Native protoc outputs with no native tooling/toolchains, or that is otherwise difficult to test, have been removed.
    • Objective-C - no common tooling exists in Maven.
    • C++ - no common tooling exists in Maven.
    • C# - Plexus tooling exists, but users are encouraged to use MSBuild or similar.
    • PHP - no common tooling exists.
    • Rust - no common tooling exists, users will prefer to use Cargo.
    • Users utilising removed languages can move to passing the flags directly via <arguments/> to continue to support their builds through version 4.
    • Any languages not mentioned here are unaffected by this change and will continue to be supported.

Full Changelog: v3.10.2...v4.0.0