Releases: ascopes/protobuf-maven-plugin
Releases · ascopes/protobuf-maven-plugin
v2.7.0
A fairly big release with lots of bug fixes and a couple of new features.
New features
- Introduced an experimental incremental compilation mode. The aim is to avoid regenerating the entire codebase with protoc if only a subset of sources have changed. This should significantly speed up development build times on codebases with large numbers of proto files.
- Set
<incrementalCompilation>true</incrementalCompilation>
or setprotobuf.compiler.incremental
totrue
to opt into using it. - This feature is disabled by default to avoid risking breaking existing builds.
- Since this is experimental, the feature may be subject to change in how it works internally for future bugfixes.
- This mechanism tracks dependencies and sources between builds and selectively recompiles only the files that may need changes. It is currently unable to act 'intelligently' respecting the logical dependency graph between files but this may be improved in the future.
- Integrity of existing generated sources is not tracked at this time, but may be in the future.
- This does not affect how the maven-compiler-plugin compiles sources.
mvn clean
will purge the cache and trigger a full rebuild.
- Set
- Archive extraction has been reworked and now supports loading JARs recursively from other JARs (and other archive types that were already supported).
Bugfixes and performance improvements
- Fixed a bug that caused a NullPointerException if dependencies were added with invalid classifiers that did not correspond to a real artifact. Correct errors are now raised to the user in this case.
- Fixed a bug where fatal artifact resolution errors were being ignored.
- Fixed a bug where non-fatal artifact resolution errors were not being logged. These are now emitted as warning logs.
- Fixed a bug where ConcurrentExecutor was not a singleton, which meant multiple threadpools were being initialised.
- Fixed a bug where dependency digests used paths rather than URIs for their seed, which could create a case where two JARs with nested dependencies produce a duplicate digest and thus break the import path for protoc.
- Generated source directories are now registered prior to invoking protoc rather than after. This supports incremental compilation by allowing the maven-compiler-plugin to still see all sources correctly if only a subset or no generated files change between builds.
- ConcurrentExecutor now uses a cached thread pool rather than a fixed-size thread pool if virtual threads are unavailable on the platform. The change should improve dependency analysis times.
- Fixed debug logs for paths discovered in JARs so that they use a representation that makes them explicitly clear to the user that they are a JAR virtual file system.
- Fixed incorrect logger name on proto source resolver components.
Internal improvements
- Updated logging to be clearer in several places.
- Some log entries have been removed.
- Some log entries have changed between debug, trace, and info levels.
- Moved source code resolution and import resolution to a new set of components to assist in code maintainability in the future.
- System path order is now guaranteed at compile time rather than being an implicit assumption. This logically does not change the existing behaviour or fix any bugs but reduces the risk of regression in the future.
- Integration test dependencies have been refactored to use a common setup POM, reducing the work needed to keep dependencies up to date in the future.
- Integration test common dependencies are now managed by Dependabot for weekly updates.
- Renamed several internal components and moved items between packages to improve code clarity and structure.
- Fixed a number of warnings in unit tests.
- Fixed a few typos in logs and exception messages.
- Improved JVM protoc plugin resolution exception handling.
- The archive extractor has been inlined and allowed the removal of duplicate code.
- Upgraded test dependencies to the latest version.
- Includes Scala, gRPC, reactor, and protobuf libraries.
- Test against Kotlin v2 rather than Kotlin v1.
Changelog
- GH-438: Inline the proto archive extractor by @ascopes in #447
- GH-438: Change unique name digest generation for archives to use full URIs by @ascopes in #448
- GH-438: Rename components to be clearer for their intention by @ascopes in #449
- Correctly mark the concurrent executor as a singleton by @ascopes in #450
- GH-438: General tidyup of source and plugin structuring by @ascopes in #452
- Bump com.puppycrawl.tools:checkstyle from 10.20.0 to 10.20.1 by @dependabot in #454
- Perform a small tidyup of unit test classes to fix warnings and duplication noise by @ascopes in #453
- Handle artifact resolution failures correctly with Aether rather than raising an NPE by @ascopes in #455
- Update task dependencies, use common POM to aggregate by @ascopes in #456
- Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.1 to 3.2.7 by @dependabot in #457
- Use an explicit list for the system path in HostSystem.java by @ascopes in #458
- Update ConcurrentExecutor.java to use cached thread pool by @ascopes in #460
- Bump io.projectreactor:reactor-core from 3.6.11 to 3.7.0 in /protobuf-maven-plugin/src/it/setup by @dependabot in #461
- GH-438: Implement incremental compilation by @ascopes in #459
- Bump com.fasterxml.jackson:jackson-bom from 2.16.1 to 2.18.1 by @dependabot in #463
- Bump com.google.api.grpc:proto-google-common-protos from 2.48.0 to 2.49.0 in /protobuf-maven-plugin/src/it/setup by @dependabot in #464
Full Changelog: v2.6.6...v2.7.0
v2.6.6
What's Changed
- Bump com.puppycrawl.tools:checkstyle from 10.18.2 to 10.19.0 by @dependabot in #435
- Bump org.apache.maven.plugins:maven-plugin-report-plugin from 3.15.0 to 3.15.1 by @dependabot in #434
- Bump org.apache.maven.plugin-tools:maven-plugin-annotations from 3.15.0 to 3.15.1 by @dependabot in #432
- Bump org.apache.maven.plugins:maven-checkstyle-plugin from 3.5.0 to 3.6.0 by @dependabot in #436
- Bump org.apache.maven.plugins:maven-plugin-plugin from 3.15.0 to 3.15.1 by @dependabot in #433
- Extract out common logic for file tree rebasing by @ascopes in #437
- Reduce log noise for large numbers of protoc sources by @ascopes in #439
- Bump com.puppycrawl.tools:checkstyle from 10.19.0 to 10.20.0 by @dependabot in #444
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.10.1 to 3.11.1 by @dependabot in #442
- Bump org.apache.maven.resolver:maven-resolver-api from 2.0.2 to 2.0.3 by @dependabot in #443
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.1 to 3.5.2 by @dependabot in #441
- Bump org.apache.maven.plugins:maven-jxr-plugin from 3.5.0 to 3.6.0 by @dependabot in #440
- Force certain global components to be initialised as singletons rather than prototypes (the default) by @ascopes in #446
Full Changelog: v2.6.5...v2.6.6
v2.6.5
What's Changed
- Bump org.junit:junit-bom from 5.11.2 to 5.11.3 by @dependabot in #429
- Bump org.apache.maven.plugins:maven-invoker-plugin from 3.8.0 to 3.8.1 by @dependabot in #428
- Bump org.apache.maven.plugins:maven-project-info-reports-plugin from 3.7.0 to 3.8.0 by @dependabot in #430
- Improve executor shutdown failsafe and tests by @ascopes in #427
Full Changelog: v2.6.4...v2.6.5
v2.6.4
What's Changed
- Bump org.apache.maven.resolver:maven-resolver-api from 2.0.1 to 2.0.2 by @dependabot in #423
- Bump org.mockito:mockito-bom from 5.14.1 to 5.14.2 by @dependabot in #424
- Retain stacktrace for MultipleFailuresException by @ascopes in #425
- Improve MultipleFailureException message to include first cause by @ascopes in #426
Full Changelog: v2.6.3...v2.6.4
v2.6.3
What's Changed
Full Changelog: v2.6.2...v2.6.3
v2.6.2
What's Changed
- Bump org.mockito:mockito-bom from 5.13.0 to 5.14.0 by @dependabot in #403
- Bump org.junit:junit-bom from 5.11.0 to 5.11.1 by @dependabot in #404
- Bump com.mycila:license-maven-plugin from 4.5 to 4.6 by @dependabot in #405
- Remove noisy logging in SystemPathBinaryResolver.java by @ascopes in #406
- Tweak UsesSystemProperties.java by @ascopes in #407
- Reorganise build steps by @ascopes in #409
- Bump com.puppycrawl.tools:checkstyle from 10.18.1 to 10.18.2 by @dependabot in #410
- Bump org.mockito:mockito-bom from 5.14.0 to 5.14.1 by @dependabot in #411
- Simplify logic in ArgFileBuilder by @ascopes in #413
- Reduce duplicate CI test runs, run builds on Java 24-ea as well by @ascopes in #414
- Bump org.junit:junit-bom from 5.11.1 to 5.11.2 by @dependabot in #418
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.0 to 3.5.1 by @dependabot in #416
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.10.0 to 3.10.1 by @dependabot in #417
- GH-419: Do not complain if generated files already exist by @ascopes in #420
Full Changelog: v2.6.1...v2.6.2
v2.6.1
What's Changed
- Remove the Shlex class now it is no longer needed by @ascopes in #400
- Use JDK 23 for builds by @ascopes in #401
- Bump com.github.marschall:memoryfilesystem from 2.8.0 to 2.8.1 by @dependabot in #402
Full Changelog: v2.6.0...v2.6.1
v2.6.0
What's Changed
- Bump the maven group across 31 directories with 2 updates by @dependabot in #389
- Bump the maven group across 33 directories with 3 updates by @dependabot in #388
- Bump the maven group across 8 directories with 1 update by @dependabot in #390
- GH-393: Use tiered level-1 compilation when running JVM subprocesses by @ascopes in #395
- Internalize dependencies on aether by @ascopes in #396
- GH-394: Use Java argument files for command line arguments by @ascopes in #398
- GH-397: implement ability to specify JVM arguments to plugins by @ascopes in #399
Full Changelog: v2.5.0...v2.6.0
v2.5.0
What's Changed
- Explicitly handle invalid POM dependencies in ProtoSourceResolver by @ascopes in #355
- Enforce immutability in ConcurrentExecutor.java by @ascopes in #360
- Use interfaces for all immutables-generated types by @ascopes in #361
- GH-358: Support the use of unpackaged JVM plugins by @ascopes in #362
- GH-358: Fix handling of Windows path separators in classpaths by @ascopes in #365
- Remove Android selectors that are noise in tests by @ascopes in #366
- GH-363: Fix handling of classpaths when using JARs as JVM maven plugins by @ascopes in #364
- GH-359: Pass module path to JVM plugins correctly by @ascopes in #367
- Upload build logs to GitHub by @ascopes in #369
- Log generated scripts in debug logs by @ascopes in #371
- GH-372: Rewrite how batch args are quoted using Shlex by @ascopes in #373
Full Changelog: v2.4.5...v2.5.0
v2.4.5
What's Changed
- feat: improved jvm plugin subprocess handling by @tandemdude in #343
- Bump com.puppycrawl.tools:checkstyle from 10.17.0 to 10.18.1 by @dependabot in #344
- Bump org.mockito:mockito-bom from 5.12.0 to 5.13.0 by @dependabot in #345
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.8.0 to 3.10.0 by @dependabot in #346
- Bump org.apache.maven.plugins:maven-plugin-report-plugin from 3.14.0 to 3.15.0 by @dependabot in #347
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.4.0 to 3.5.0 by @dependabot in #349
- Bump org.apache.maven.plugins:maven-plugin-plugin from 3.14.0 to 3.15.0 by @dependabot in #348
- GH-351: Replace Component annotations with javax.inject.Inject. by @ascopes in #352
- Bump org.apache.maven.plugin-tools:maven-plugin-annotations from 3.14.0 to 3.15.0 by @dependabot in #350
- GH-312: Move solution into HostSystem class and add unit tests by @ascopes in #353
- Update to protobuf 4.28.0 by @ascopes in #354
New Contributors
- @tandemdude made their first contribution in #343
Full Changelog: v2.4.4...v2.4.5