gnodet opened a new pull request, #22510:
URL: https://github.com/apache/camel/pull/22510

   Supersedes #22509 (which used a SNAPSHOT with temporary extension injection).
   
   ## Summary
   
   - Adds [Maveniverse Scalpel](https://github.com/maveniverse/scalpel) 0.1.0 
permanently to `.mvn/extensions.xml`
   - Adds Scalpel-based POM dependency detection in `incremental-build.sh` 
alongside the existing grep approach
   - On developer machines, Scalpel is a no-op (no `GITHUB_BASE_REF` → no base 
branch → returns immediately)
   
   ### Why
   
   The grep-based approach has 5 structural limitations. For example, when 
Dependabot bumps `azure-sdk-bom-version` (#21744), grep finds only 
`camel-azure/pom.xml` but misses all 12 child Azure modules that inherit via 
the BOM. Scalpel catches them via effective POM model comparison.
   
   ### How it works
   
   Scalpel is a Maven core extension that compares effective POM models between 
the base branch and the PR. In CI:
   
   1. `incremental-build.sh` runs `mvn validate -Dscalpel.mode=report` 
(~60-90s, no compilation)
   2. Scalpel writes `target/scalpel-report.json` with affected modules and 
reasons
   3. Results are merged with grep detection (union, deduplicated)
   4. `-Dscalpel.fullBuildTriggers=` overrides the default (`.mvn/**`) since 
Scalpel lives in `extensions.xml`
   
   ### vs #22509
   
   The SNAPSHOT PR required ~50 lines of temporary injection (awk into 
extensions.xml, settings.xml with snapshot repo, backup/restore via trap). With 
the released 0.1.0 on Maven Central, the extension is permanent and the script 
is much simpler.
   
   ## Test plan
   
   - [ ] Verify Scalpel 0.1.0 resolves from Maven Central during CI build
   - [ ] Verify report generation on a PR that bumps a version in 
`parent/pom.xml`
   - [ ] Verify grep-only fallback when Scalpel fails
   - [ ] Verify no impact on local developer builds (no-op without CI env vars)
   - [ ] Compare grep vs Scalpel detection on Dependabot PRs (#22397, #21744)
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   
   _Claude Code on behalf of Guillaume Nodet_


-- 
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