gnodet opened a new pull request, #1163: URL: https://github.com/apache/maven-compiler-plugin/pull/1163
## Summary Adds ABI fingerprint tracking to the graph incremental build engine (step 2 of 4 splitting [PR #1157](https://github.com/apache/maven-compiler-plugin/pull/1157) per the [review comment](https://github.com/apache/maven-compiler-plugin/pull/1144#issuecomment-5984536369)). > **Stacked on [PR #1162](https://github.com/apache/maven-compiler-plugin/pull/1162)** — review/merge that first. This PR's diff is only the incremental commit on top. ### Changes - **ABI fingerprint computation**: When `abi` tracking is enabled, the engine computes per-type ABI fingerprints and a human-readable canonical form from the class file's public API surface (non-private fields/methods, supertypes, interfaces, generic signatures, constant values). - **Fine-grained dependency sets**: Types classified into `signatureDeps` (public API surface) and `implementationDeps` (method bodies/private members), enabling more precise cascade decisions. - **`AbiTypeInfo` state variant**: Extends `GraphTypeInfo` with signature/implementation dependency sets and an ABI fingerprint. Tagged binary serialization format (version 2, backward compatible with version 1). - **`abi` strategy parameter**: Accepted as an `incrementalStrategy` value alongside `graph` and `timestamp`. - **`BytecodeAnalyzer.isAvailable()`**: Multi-release JAR method, `true` on JDK 24+, `false` otherwise. - **Module-info ABI**: Module declarations get canonical form covering requires, exports, opens, uses, and provides directives. ### What's excluded (separate PRs) - Cross-module ABI manifest writing (step 3) - Annotation processor classification (step 4) ## Test plan - [x] `IncrementalStateTest` — ABI type info serialization round-trip, consumer indexing - [x] `BytecodeAnalyzerTest` — ABI fingerprint stability, generic signatures, module-info - [x] `GraphIncrementalBuildTest` — ABI cascade behavior, config hash - [x] Full local build with `mvn clean verify -B` passes (JDK 24+ test failures pre-existing) 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
