Upgrade Guide
Descriptor-Driven gRPC Type Resolution
If you are upgrading to a version that requires descriptor-driven gRPC resolution, you must enable descriptor set generation in your gRPC/protobuf build. Without it, gRPC service/client generation will fail at build time.
Ensure your build emits a descriptor set (for example via Quarkus gRPC codegen for your version), or provide protobuf.descriptor.path/protobuf.descriptor.file to the annotation processor.
See protobuf descriptor integration for full setup details and troubleshooting.
Classifier Packaging Migration (Role Directories)
This migration assumes a baseline with no plugins/aspects and no classifier infrastructure. The goal is to introduce role-based packaging without a custom Maven plugin or class-name heuristics.
Target State
- Generated sources are written to:
target/generated-sources/pipeline/orchestrator-clienttarget/generated-sources/pipeline/pipeline-servertarget/generated-sources/pipeline/plugin-clienttarget/generated-sources/pipeline/plugin-servertarget/generated-sources/pipeline/rest-server
- Each role directory is compiled into a role-specific output directory.
maven-jar-pluginproduces one classifier JAR per role usingclassesDirectory.META-INF/pipeline/roles.jsonmay remain for documentation/validation only.
Migration Steps
Configure the annotation processor output root
- Add
-Apipeline.generatedSourcesDir=target/generated-sources/pipelineto the compiler plugin. - Optional: set
<generatedSourcesDirectory>to the same path for consistency. - If you see warnings during
testCompile, scope this compiler arg to thecompileexecution only.
- Add
Register role directories as sources (IDE visibility)
- Add
build-helper-maven-pluginto register each role directory as a source root. - If tests reference generated classes, also register the same directories as test sources in
generate-test-sources.
- Add
Compile each role directory
- Add
maven-compiler-pluginexecutions that compile each role directory to a dedicated output directory (e.g.,target/classes-pipeline/orchestrator-client). - Disable annotation processing in these secondary executions with
<proc>none</proc>.
- Add
Package classifier JARs
- Use
maven-jar-pluginexecutions withclassesDirectorypointing to each role output directory.
- Use
Benefits
- No class-name heuristics
- No custom Maven plugin
- Clear, deterministic packaging inputs
- Easier to extend with new roles