gnodet opened a new pull request, #1155: URL: https://github.com/apache/maven-compiler-plugin/pull/1155
## Summary Upgrades the graph incremental strategy (#1154) to full ABI-fingerprint tracking: only API-surface changes cascade to consumers, so body-only changes stay local. **Depends on: #1154** (graph strategy + bytecode analyzer) ## What changes vs the graph strategy - **graph**: any change (API or body) cascades to all consumers - **abi** (this PR): only API surface changes cascade; body-only changes recompile the changed class only - **Cross-module**: the ABI manifest (`.abi-fingerprints`) lets downstream reactor modules detect upstream API changes without re-reading bytecode ## New classes - **`AbiManifest`** — reads/writes `.abi-fingerprints` manifest; `qualifiedName=fingerprint` lines, sorted, `#maven-compiler:v1` header; written after each compile for downstream modules - **`ExternalAbiResolver`** — resolves ABI fingerprints for classpath types via three-strategy cascade: (1) manifest in directory entries, (2) reactor module bytecode scan, (3) JAR bytecode fallback; JARs cached by identity (size:mtime) ## Upgraded classes - **`SourceFileAnalysis`** — adds `abiFingerprint` and `abiCanonical` - **`IncrementalState`** — VERSION=3; `TypeInfo` gains `abiFingerprint`; new: `getAbiFingerprint`, `getAllAbiFingerprints`, `getExternalFingerprints`, `getClasspathIdentities`, `getExternalDependencies`, `getSourceFilesWithAnnotations`, `getAllAnnotationTypes` - **`AbiIncrementalBuild`** — fingerprint comparison instead of content-hash cascade; `finish()` writes `AbiManifest`; state file `.abi-incremental-state` (distinct from graph's `.incremental-state`) - **`ToolExecutor`** — classpath/reactor-module path wiring for cross-module ABI resolution ## Tests 105 passing (14 new: `AbiManifestTest`×7, `ExternalAbiResolverTest`×6, updated `AbiIncrementalBuildTest` and `IncrementalStateTest`). -- 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]
