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]
