Remove support for field-based and constructor-based BuildProducers and forbid build steps that produce nothing #27046
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The main goal was to forbid build steps that produce nothing, because those are never going to be executed: they are basically either a bug or dead code in an extension. It turns out we had several such build steps in Quarkus Core, which were never going to be executed.
But it was unclear to me what would happen when a build step produces build items through build producers injected into the constructors and/or fields. Since that injection is a legacy, deprecated feature (nowadays we expect build producers to be passed to the build step method directly, or the build step method to return a build item directly), I proposed that we remove that feature (see https://groups.google.com/g/quarkus-dev/c/JUwVPsAYVP0/m/SMcjGzu6CwAJ), which was agreed upon. Hence the first two commits.