You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Decide: vendor single-module Maven poms through the suffixed-version jvm planner and retire the same-GAV <repository> wiring #973
[agent] Filed by the scheduled architecture audit routine (ecosystems and formats). Register: discussion #560 register.
Kind: decision. Source: review Part 5.7; register E26. Child 2 of #971.
Question
Should vendor on a project whose root pom.xml declares no modules, and that has no Gradle build, use the v5 planner instead of the legacy same-GAV <repository> wiring? If so, what happens to projects already vendored the legacy way?
B. Option A plus automatic migration.vendor / scan --mode vendored reverts a legacy entry and re-plans it in the same run. That is more code, and the run changes pom.xml for users who didn't ask.
delete vendor_maven_single, maven_prelude's legacy-only checks, the build_repo_edit writer, the comment-stripping declares_modules and local_cache_shadow_warning (about −600 production lines);
keep revert_repo_record for old entries.
That also closes #716, makes #622 a smaller routing fix, and removes the single-module half of #263 and #274.
Acceptance criteria for the follow-up
A single-module e2e (e2e_vendor_maven_build.rs) builds the patched jar with a warm ~/.m2 and with mirrorOf external:*.
A ledger holding a maven_pom_repository entry still reverts byte for byte, and its root is not re-planned until it is reverted.
Docs and contract rows are updated in the same PR.
[agent] Filed by the scheduled architecture audit routine (ecosystems and formats). Register: discussion #560 register.
Kind: decision. Source: review Part 5.7; register E26. Child 2 of #971.
Question
Should
vendoron a project whose rootpom.xmldeclares no modules, and that has no Gradle build, use the v5 planner instead of the legacy same-GAV<repository>wiring? If so, what happens to projects already vendored the legacy way?Options
<base>-socket.<hex8>, served from.socket/vendor/maven2, plus.mvn/maven.configand a fallback repository. Existingmaven_pom_repositoryentries keep reverting through today's code, and a root that still has one stays legacy until it is reverted.legacy_mixed_rootalready applies exactly this rule to mixed roots (Vendored Maven on a project with both pom.xml and build.gradle reports success with no Gradle warning, the Gradle build keeps the unpatched jar, and VEX attests not_affected #395).vendor/scan --mode vendoredreverts a legacy entry and re-plans it in the same run. That is more code, and the run changespom.xmlfor users who didn't ask.<repository>or amirrorOf *mirror serves the same GAV, and VEX still attests #263, Same-GAV Maven patches are shadowed when a build plugin depends on the same GAV in a reactor build #274, Vendored Maven 4 reactor with implicit subprojects (model 4.1.0, no <subprojects>) is wired as a single POM, so a warm ~/.m2 builds the unpatched jar while vex attests not_affected #622 and Vendored Maven refuses a single-module EAR pom as a multi-module aggregator because two declares_modules disagree #716 one at a time inside the same-GAV model. Some can only be warned about, not fixed, because the unsuffixed GAV is shadowed by design.Why it needs an owner
It changes what
vendorwrites for the most common Maven shape:.mvn/maven.config;<version>and a<dependencyManagement>pin;.socket/vendor/maven2/…instead of.socket/vendor/maven/<uuid>/…;"jvm";vendor_maven_local_cache_shadowwarning.docs/ecosystems.md,CLI_CONTRACT.mdand the Maven CI matrix would change with it.Evidence (main @
9c43dfc)Detected::shapemaps a lone single-module pom toShape::Other, sovendor_mavenfalls back tovendor_maven_single. The same pom beside a Gradle build is already planned bymaven_reactor::plan_with_config.maven_reactortest planned a lone CRLF single-module pom (detect=Other) that depends oncommons-text:1.10.0..mvn/maven.config, themaven2tree andpom.xml, with no warnings.unplanrestoredpom.xmlbyte for byte and removed.mvn/maven.config.vendor_maven_local_cache_shadow,`` because a warm~/.m2serves the unpatched same-GAV jar. Vendored Maven silently resolves the unpatched jar when an earlier<repository>or amirrorOf *mirror serves the same GAV, and VEX still attests #263 (earlier repository / `mirrorOf *`) and Same-GAV Maven patches are shadowed when a build plugin depends on the same GAV in a reactor build #274 (a plugin realm populating `~/.m2`) are more cases of that shadow, and VEX still attests them.If A is chosen
#971 child 3:
detectreturns a planner shape forSingle;vendor_maven_single,maven_prelude's legacy-only checks, thebuild_repo_editwriter, the comment-strippingdeclares_modulesandlocal_cache_shadow_warning(about −600 production lines);revert_repo_recordfor old entries.That also closes #716, makes #622 a smaller routing fix, and removes the single-module half of #263 and #274.
Acceptance criteria for the follow-up
e2e_vendor_maven_build.rs) builds the patched jar with a warm~/.m2and withmirrorOf external:*.maven_pom_repositoryentry still reverts byte for byte, and its root is not re-planned until it is reverted.