Releases: ascopes/protobuf-maven-plugin
v4.1.3
- Added warning logging for deprecated parameter use
- Refactored some internals for incremental cache management logic
- Simplified internal model generation
- Bump protobuf-java internally from 4.33.2 to 4.33.5
- Several improvements to documentation:
- Improved search engine optimisation
- Improved corporate usage advice
- Added advice for developing JVM-based Maven plugins
- Added advice for cross-platform plugin development
- Updated internal dependencies and test dependencies to the latest version
Manually tagged this time as Maven Central broke the automated builds again by returning 500 errors upon publication.
v4.1.2
- Configure JVM-based protoc plugins to use ParallelGC by default unless overridden, since this is optimal for short-lived processes.
- Fixes to internal CDI scoping.
- Add missing metadata to internal CDI components.
- Optimisations for path-based executable discovery on both Windows and POSIX-compliant systems.
- Adjusted license headers for 2026 and beyond.
- Dependency updates for internals including
com.google.protobuf:protobuf-bomandorg.json:json. - Build on Maven 3.9.12 and Maven 4.0.0-rc-5.
v4.1.1
- Reworked plugin resolution to be able to run in parallel.
- Consistent generation of plugin ID naming is now enforced across all protoc plugin kinds.
- JVM plugin executable generation is now abstracted, internal paths have changed slightly so users may want to run
mvn cleanon projects when updating to ensure any old files are cleaned up. pluginsspecification order is now retained internally. This does not influence execution order (which is what the order param is to be used for by consumers), but does influence the naming of internally generated files. This leads to stronger buildvconsistency guarantees when updating this Maven plugin in the future.- Removed some incorrectly documented attributes from documentation that did not exist for certain protoc plugin variants.
v4.1.0
This release implements a new way of specifying protoc plugins. Whilst the old mechanism still works, it is now deprecated for removal in v5.0.
Plugins are now specified as a discriminated list with a kind attribute.
For example:
<plugin>
<groupId>io.github.ascopes</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>4.1.0</version>
<configuration>
<plugins>
<plugin kind="binary-maven">
...
</plugin>
</plugins>
</configuration>
</plugin>See https://ascopes.github.io/protobuf-maven-plugin/using-protoc-plugins.html for full details of usage, with examples.
This paves the way for cleaning up some ugly parts of the API in v5.0, as well as supporting consistency with GH-877 which aims to allow eventually using WASM distributions of protoc as an optional alternative to platform-specific binaries.
v4.0.3
- Align OS detection logic with that used within OpenJDK for JLine.
- Improve logging globally. Some log entries are now trace/debug instead of info. Wording and formatting has been reviewed to improve coherance. Some parameter types will now have friendly string representations when appearing in diagnostics and logs.
- Build with ErrorProne and NullAway to detect nullability bugs within the codebase. Fixed warnings in several unit test classes.
- Add a number of new tests, including testing against the v1.0.0 alpha builds of the ScalaPB plugin.
- Bump protobuf-java dependency to 4.33.1.
- Include JXR reports in generated site.
- Fix some mistakes in documentation.
- Avoid letting GitHub generate these release notes as it is less clear to consumers when a number of dependabot merges have occurred.
v4.0.2
What's Changed
- GHSA-j2pc-v64r-mv4f: Fix digest not being verified for system path protoc by @ascopes in #857
Full Changelog: v4.0.1...v4.0.2
v3.10.3
v4.0.1
What's Changed
Full Changelog: v4.0.0...v4.0.1
v4.0.0
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
embedSourcesInClassOutputsis nowtruerather thanfalse, 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
v4.0.0-M3
Breaking changes/decision changes for v4.0.0
embedSourcesInClassOutputsnow defaults totruerather thanfalse.- Reinstated the ability to control failure policy for missing sources, by request. This will no longer be considered deprecated for removal and will be present in v4.0.0.
What's Changed
- Bump com.google.protobuf:protobuf-bom from 4.32.1 to 4.33.0 by @dependabot[bot] in #842
- Bump io.projectreactor:reactor-core from 3.7.11 to 3.7.12 in /protobuf-maven-plugin/src/it/setup by @dependabot[bot] in #841
- Bump com.google.api.grpc:proto-google-common-protos from 2.61.3 to 2.62.0 in /protobuf-maven-plugin/src/it/setup by @dependabot[bot] in #843
- GH-845: Undeprecate fail on missing sources functionality by @ascopes in #846
- Bump org.apache.maven.plugin-tools:maven-plugin-annotations from 3.15.1 to 3.15.2 by @dependabot[bot] in #848
- Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in #847
- Bump org.apache.maven.plugins:maven-plugin-plugin from 3.15.1 to 3.15.2 by @dependabot[bot] in #850
- Bump kotlin.version from 2.2.20 to 2.2.21 in /protobuf-maven-plugin/src/it/setup by @dependabot[bot] in #851
- Bump org.apache.maven.plugins:maven-plugin-report-plugin from 3.15.1 to 3.15.2 by @dependabot[bot] in #849
Full Changelog: v3.10.2...v4.0.0-M3