Skip to content

Resolve POM edges from the project's classpath closure - #221

Merged
russwyte merged 2 commits into
mainfrom
pom-closure
Oct 6, 2026
Merged

russwyte merged 2 commits into
mainfrom
pom-closure

Conversation

@russwyte

@russwyte russwyte commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Fixes #220.

update and publish collected POM edges with inAnyProject, so they evaluated projectDependencies for every project. ++ only switches projects whose crossScalaVersions contains that version, and sbt then refuses a Scala mismatch on a sibling the command never touches.

zipxPomExclusions now reads zipxPomEdges for the classpath closure (inDependencies). Two projects that resolve as the same module are DuplicateModule instead of a last-wins map.

The exclusion rules are unchanged. Docs state the closure on "What a consumer resolves", and the cmd page states what ++ switches.

plugin/scripted zipx/scala-switch runs ++2.13.16 then legacy/update and legacy/publishLocal, then ++3.9.0 then the same for app, and checks each POM excludes only its own models artifact. zipx/pom-exclusions still passes. sbt "scalafmtAll; cleanFull; testFull" passed (122 tasks).

update and publish read projectDependencies for every project, so a ++
session failed on a sibling it never touches. Read the classpath closure,
and refuse a resolved module that names more than one project.
The cache epoch is the hash of the ship row, so it moved when the line opened.
@russwyte
russwyte merged commit 8fa88f2 into main Oct 6, 2026
13 checks passed
@russwyte
russwyte deleted the pom-closure branch October 6, 2026 14:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

A ++ session fails update in projects it never touches: zipxPomExclusions resolves every project's projectDependencies

1 participant