Never package bytecode-modified class files in published JARs#4343
Merged
Never package bytecode-modified class files in published JARs#4343
Conversation
The markGeneratedEqualsHashCode task was modifying class files in-place in build/classes/java/main, and the jar task depended on it, causing the @Generated-annotated bytecode to flow into published artifacts. Fix: copy classes to a separate build/classes-jacoco/ directory before modifying them, prepend that directory to the test classpath (so Jacoco CRC64 checksums match), and point jacocoTestReport at the modified copy. The jar/shadowJar tasks now only see the pristine compiler output. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Contributor
Test ReportTest Results
Code Coverage (Java 25)
|
Member
|
Thanks!!! |
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.
Summary
markGeneratedEqualsHashCodetask was modifying.classfiles in-place inbuild/classes/java/mainand thejartask depended on it, causing every published class withequals/hashCodeto contain a spurious@Generated(Lgraphql/coverage/Generated;) annotation in the bytecodebuild/classes-jacoco/directory before injecting annotations, prepend that directory to the test classpath (so Jacoco CRC64 checksums match the execution data), and pointjacocoTestReportat the modified copyjar/shadowJar/publish tasks now only see pristine compiler output — no bytecode modifications leak into artifactsTest plan
build/classes/java/mainremain unmodified after runningmarkGeneratedEqualsHashCodebuild/classes-jacoco/java/maincontain the@Generatedannotationgraphql.coverage.Generatedannotationsgraphql.coverage.Generatedannotations./gradlew test)equals/hashCodemethods are properly excluded from the Jacoco coverage report🤖 Generated with Claude Code