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]

Reply via email to