gnodet opened a new pull request, #1157:
URL: https://github.com/apache/maven-compiler-plugin/pull/1157

   ## Summary
   
   - Add a new `maven.compiler.incrementalStrategy=graph` option that tracks 
class-level dependencies via bytecode analysis. When a source file changes, 
only the source files that transitively depend on any of its classes are 
recompiled, instead of recompiling everything.
   - Multi-release JAR infrastructure using `java.lang.classfile` (JDK 24+) for 
bytecode analysis, with automatic fallback to the timestamp strategy on older 
JDKs.
   - Full JPMS support including `module-info.java` tracking, annotation 
processor classification (isolating/aggregating/unknown), and cross-module 
classpath identity tracking for SNAPSHOT dependency changes.
   
   Key components:
   - `GraphIncrementalBuild`: content-hash change detection, cascade logic, 
classpath change detection
   - `IncrementalState`: persistent binary state (source hashes, type 
dependency graph)
   - `BytecodeAnalyzer` / `ClassfileClassAnalyzer`: JDK 24+ classfile API for 
extracting type references
   - `ProcessorClassification`: annotation processor type detection from 
Maven/Gradle metadata
   
   ## Test plan
   
   - [x] Unit tests for `GraphIncrementalBuild` (22 tests): full build, 
incremental with changed/added/deleted files, cascade recompilation, 
module-info changes, config hash changes, classpath change detection
   - [x] Unit tests for `IncrementalState` (11 tests): serialization 
round-trip, type indexing, source removal, copy semantics
   - [x] Unit tests for `BytecodeAnalyzer` (23 tests): signature/implementation 
type classification, generics, annotations, module-info, inner classes
   - [x] Unit tests for `ProcessorClassification` (12 tests): Maven/Gradle 
metadata loading, precedence rules
   - [x] Unit tests for `ByteCodeTransformer` (4 tests): module version 
patching with java.lang.classfile
   - [x] Full test suite passes (91 tests, 0 failures)
   
   🤖 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]

Reply via email to