Releases: ascopes/protobuf-maven-plugin
Release list
v5.1.7
What's Changed
- GH-1022: keep exe, cmd and ps1 extension for windows binaries by @hypnoce in #1023
- Dependencies updated to latest
Full Changelog: v5.1.6...v5.1.7
v5.1.6
What's Changed
- Forbid unused imports by @ascopes in #1017
- Bump actions/checkout from 6 to 7 by @dependabot[bot] in #1019
- Added support for Solaris / illumos by @siepkes in #1018
New Contributors
Full Changelog: v5.1.5...v5.1.6
v5.1.5
Nothing of major note for this update. Just pushing a newer build containing dependency updates to help those working in corporate environments with strict security triage policies.
Going forward, I am going to look to do this on a monthly or bi-monthly basis to allow users to keep their builds up to date.
As usual, any problems, just raise a discussion on our GitHub!
v5.1.4
Release notes
-
Deprecated
protocDigestparameter for removal in the future. It is now replaced with<digest>within aPathProtocDistributionorUriProtocDistributionobject, which makes this API consistent with the Protoc plugin API.- Users may continue to use the current mechanism until the next major version but are advised to update their usages where possible.
- The next major version will not support digests on Maven-based protoc distributions, as this is redundant functionality.
- Documentation examples have been updated to reflect the change.
- For example:
<configuration> <protoc kind="url"> <url>https://...</url> <digest>sha1:a927271a34eab2353662e2ec6f0686553034821a</digest> </protoc> </configuration>
-
Added missing digest verification functionality for path based protoc plugins.
-
Optimised digest generation and decoding to utilise SIMD functionality within the JDK. This reduces both overhead and memory consumption in complex builds.
-
Improved control flow for dependency resolution.
-
Removed noisy logging during plexus configuration merging.
Other changes
- Build on Maven 3.9.15.
- Dependency updates, as usual.
v5.1.3
Fairly large update to existing code that bundles several QoL improvements and bugfixes
to improve user experience.
Bugfixes
- Fix NullPointerException raised when failing to resolve dependencies in certain cases
(@askoog, GH-980). - Abstract away class references from Plexus parameter converters entirely. This avoids
edge cases where ClassWorlds within Maven may try to classload the same classes in
multiple places, causing class definition mismatches and breaking type conversion within
POMs. This is a defensive workaround to the issue originally addressed by GH-974. - Remove caching of sealed types to further avoid issues such as those in GH-974.
- Make configurator classes into singletons to enforce fixes for GH-974.
UX improvements
- Users are now warned in cases where we mitigate issues caused by overriding a string
attribute in a child POM with an object attribute in a parent POM. The erroneous
configuration is now logged as a warning, and a suggested fix is logged to the user. - Improved error messages reported during failures in artifact resolution.
Performance improvements
- Optimise resolution logic for skipped plugins to remove unneeded forking of threads
(@cdprete, GH-975). - Avoid creation of entire mappings of type information within SealedTypePlexusConverter
during parameter conversion. - URL transfers from FTP servers and HTTP/HTTPS endpoints now supports requesting GZIP
compression of the response.
Internal improvements
- Fixes to documentation typos and grammar issues.
- Improvements to various unit tests, including addition of missing test cases.
- Improvements to code coverage and code quality.
- Internal package structure improvements.
- Build on macOS 26.
- Dependency updates.
v5.1.2
What's Changed
Full Changelog: v5.1.1...v5.1.2
v5.1.1
What's Changed
- Fix per plugin skip. Make sure the skip attribute on plugins is taken into account. by @hypnoce in #973
New Contributors
Full Changelog: v5.1.0...v5.1.1
v5.1.0
New features
- Implement "protoc distributions" allowing you to specify the protoc binary to use in the same format that protoc plugins are specified. The old mechanism of specifying a string value is still supported. See the documentation for full usage examples.
- This allows users to now override the name of the binary to look for on the system path.
- Users can now explicitly override the maven classifier, type, group ID, and artifact ID of the protoc binary if pulling from Maven central.
Internal updates
- Swapped out default JVM GC for JVM-based protoc plugins from Parallel GC to Serial GC.
- Adjust initial heap for JVM-based protoc plugins.
- Build on Maven 3.9.14.
- Dependency updates.
- Removed warnings for termux users as they add little benefit outside what is already known.
- Plexus converters are now scoped per execution, which should allow earlier freeing of some memory after execution completes.
v5.0.2
Bugfixes:
- Reimplement artifact resolution to handle additional edge cases that may previously have bled into other code and caused spurious/unhelpful/vague exceptions during dependency resolution.
- Specifically, this handles a case where passing a non-existent classifier on a published dependency could result in an ArrayIndexOutOfBoundsException being raised at runtime. Other edge cases should also be handled more sensibly moving forwards.
Other changes:
- Dependency resolution now explicitly ensures additional configuration overrides within the Maven/Aether transports are propagated and used correctly with respect to things like proxies and custom authenticators.
- New examples by @sleepkqq for building Kotlin gRPC projects in the documentation.
- Build on Maven 3.9.13 in addition to 3.9.6 and 4.0.0-rc-5, now that the former has been released.
v5.0.1
v5.0.1 release notes
- Implemented partial workaround for GH-596 where users may experience OutOfMemoryExceptions being raised by Eclipse Aether during dependency resolution. - The plugin now follows similar behaviour to Maven Core by not recursing into transitive test dependencies and fat artifact dependencies, which was considered to be surprising and undefined behaviour.
- Users depending on the old behaviour should explicitly declare their dependencies following standard Maven conventions.
- This is not deemed a breaking change since the old behaviour is undefined and does not follow Maven default behaviour.
- Reverted offloading project dependency resolution to Maven to address GH-939.
- This previously manifested as various Maven reactor failures when resolving sibling dependencies in a Maven multi-module project.
- Users can now disable dependency resolution for the main project dependencies correctly by setting
<ignoreProjectDependencies>true</ignoreProjectDependencies>and only specify their protobuf dependencies via the plugin itself.
- Reduced default concurrency multiplier used for various internal tasks after several JFR profiling sessions showed a general lack of utilisation of the thread pool.
- This should reduce idle resources slightly in builds.
- Various Aether internals are now cached for the duration of the plugin goal rather than recreated numerous times during dependency resolution.
- This should reduce resource usage slightly in builds.
- Updated plugin to use
protobuf-java:4.34.0for various descriptor file-related activities. - Updated project and integration test dependencies to verify plugin compatibility across various component matrices.