Repository navigation
fix(manifest): report the sbt jars that could not be fetched - #1649
Merged
Jeppe Fredsgaard Blaabjerg (jfblaa) merged 5 commits intoOct 23, 2026
Conversation
Jeppe Fredsgaard Blaabjerg (jfblaa)
added this pull request to stack #1651
October 23, 2026 12:11
Jeppe Fredsgaard Blaabjerg (jfblaa)
removed this pull request from stack #1651
October 23, 2026 12:11
Jeppe Fredsgaard Blaabjerg (jfblaa)
added this pull request to stack #1652
October 23, 2026 12:12
Jeppe Fredsgaard Blaabjerg (jfblaa)
force-pushed
the
jfblaa/sbt-facts-unfetched-jars
branch
from
October 23, 2026 12:33
837f6ec to
2ce7374
Compare
Jeppe Fredsgaard Blaabjerg (jfblaa)
force-pushed
the
jfblaa/sbt-facts-unfetched-jars
branch
from
October 23, 2026 12:44
2ce7374 to
1132a3a
Compare
Martin Torp (mtorp)
approved these changes
Oct 23, 2026
Martin Torp (mtorp)
left a comment
Contributor
There was a problem hiding this comment.
[agent] Approving, with two inline notes.
One behaviour to be aware of: a POM with no <packaging> and no jar resolves cleanly in sbt, but with --with-files the plugin now reports it as a blocking failure. A real case is log4j:log4j:1.2.15, which pulls in javax.jms:jms:1.1 and com.sun.jmx:jmxri:1.2.1. Both POMs have no packaging and both jars 404 on Central. Marking them unfetched for reachability makes sense. Whether they should block is the policy question I raised on #1647. I reproduced the blocking with a local fixture on sbt 1.9.9.
Coursier silently skips a default jar it cannot find unless the POM declares jar packaging, and sbt 0.13's update report omits the artifacts Ivy failed to download, so both looked like POM-only modules. The plugin now tells them apart by the cached POM's packaging and by Ivy's own resolution report, reports them under their full coordinate and marks them unfetched.
The cached-POM packaging check refused any DOCTYPE, so a pom-packaged module whose POM declared one counted as a jar, and its expected missing jar blocked the run. A DOCTYPE is now allowed with external entities and DTD loading off. A jar coursier lists as missing is no longer reported as not found: the update report gives no cause, and a 401 or a timeout is as likely. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…test Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Jeppe Fredsgaard Blaabjerg (jfblaa)
force-pushed
the
jfblaa/sbt-facts-unfetched-jars
branch
from
October 23, 2026 17:10
1132a3a to
b50950b
Compare
Jeppe Fredsgaard Blaabjerg (jfblaa)
deleted the
jfblaa/sbt-facts-unfetched-jars
branch
October 23, 2026 17:24
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
LLM Description written by Claude Code:claude-opus-5-5
sbt dependencies whose jars could not be fetched looked resolved:
unfetched.useCoursier := false.Testing:
failurecompat suite extended with anartifact-failurebuild; new sbt 1.9.9 Ivy row. Passes on sbt 0.13.18, 1.4.9, 1.6.2, 1.9.9 and 1.9.9 with Ivy.🤖 Generated with Claude Code
Note
Medium Risk
Changes sbt manifest resolution and failure reporting for reachability SBOMs; incorrect classification could still mislabel dependencies, but scope is limited to the sbt facts plugin and is heavily covered by compat tests.
Overview
sbt Socket facts now treat missing jars as real resolution problems instead of silently looking like POM-only modules.
The
socket-facts.plugin.scalaplugin distinguishes Coursier’s silently skipped default jars from intentional pom, war, and aar modules by reading cached POM packaging, surfaces Ivy download failures from Ivy XML reports when sbt omits them, and emitsfailure/unfetchedrecords (with full coordinates and config scope). Lenientupdatehandling is shared across projects so upstream artifact-only failures do not wrongly mark dependents unscannable.Compat tests add stub fixtures (
nojar,pomonly,pkwar, classifier jars), anartifact-failuremulti-module build,--with-filesassertions, and an sbt 1.9.9 / Ivy matrix row.Reviewed by Cursor Bugbot for commit 837f6ec. Configure here.