Skip to content

Releases: ascopes/protobuf-maven-plugin

v2.7.0

17 Nov 09:45
Compare
Choose a tag to compare

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 set protobuf.compiler.incremental to true 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.
  • 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

04 Nov 12:14
Compare
Choose a tag to compare

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

25 Oct 11:18
Compare
Choose a tag to compare

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

19 Oct 09:28
Compare
Choose a tag to compare

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

13 Oct 08:39
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.6.2...v2.6.3

v2.6.2

09 Oct 07:53
Compare
Choose a tag to compare

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

23 Sep 20:59
Compare
Choose a tag to compare

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

22 Sep 10:08
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.5.0...v2.6.0

v2.5.0

15 Sep 19:45
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.4.5...v2.5.0

v2.4.5

31 Aug 10:27
Compare
Choose a tag to compare

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

Full Changelog: v2.4.4...v2.4.5