Gradle plugin: register generated sources for third-party WireOutput subclasses#3663
Merged
Merged
Conversation
…subclasses SourceRoots matched on the built-in output classes and threw "Wire output X is not supported" for any other WireOutput subclass, breaking plugins that add their own outputs (a regression from Wire 6, which dispatched on the produced Target and supported CustomTarget from any output). Treat unknown outputs like CustomOutput: their targets are wildcards, so register the output directory on both the Java and Kotlin source sets. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
oldergod
marked this pull request as ready for review
July 22, 2026 08:52
staktrace
approved these changes
Jul 22, 2026
dnkoutso
approved these changes
Jul 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Problem
Since the Wire 7 Gradle plugin rework,
SourceRoots.registerGeneratedSourcesmatches on the built-in output classes (JavaOutput,KotlinOutput,CustomOutput) and throws for anything else:This breaks Gradle plugins that build on top of Wire by adding their own
WireOutputsubclasses towire.outputs(found while rolling Wire 7.0.0-alpha06 out to Cash's build logic, which registers several such outputs). It's a regression from Wire 6, where dispatch happened on the producedTargetand any output producing aCustomTargetworked.Fix
Treat unknown
WireOutputsubclasses likeCustomOutput: custom targets are wildcards, so register the output directory on both the Java and Kotlin source sets (JVM/KMP and Android variants alike).ProtoOutputis filtered out beforeregisterGeneratedSourcesis called, so theelsebranch only ever sees third-party outputs.