docs(building): say what to do about "Could not build dependency tree" - #2040
Merged
Conversation
The enforcer's DependencyConvergence rule discards the underlying ArtifactResolutionException and reports only that the tree could not be built, naming the module the rule was bound to and nothing else. The artifact that failed and the repository that failed to serve it are both in the -X output, and nowhere else. Two things make that worse than an ordinary unhelpful error. The rule fires on whichever module is checked first, so the log reads as "vcell-rest is broken" when the condition is repository-wide. And any other resolution message in the log is then the only concrete detail available, which makes it look like the cause when it may not be - in run 33104159035 the only visible hint was a warning about net.minidev:json-smart, and the first attempted fix went after json-smart. The actual failure was an artifact on a dependency path nobody would have guessed. Also records the 404-vs-503 asymmetry, since it is what makes an artifact that exists in no repository at all break a build that never needed it. Documents the workaround only; see #2038 for whether a newer enforcer propagates the cause, which would make this section unnecessary. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D71LBYmQNf5J94wPqr81Jx
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.
Item (1) of #2038 — the cheap 90%.
Adds a section to
docs/BUILDING.mdtelling you to re-run with-Xand grep forCaused bywhen the enforcer reports:The rule discards the underlying
ArtifactResolutionException, so that message names the module the rule was bound to and nothing else — not the artifact that failed, not the repository that failed to serve it.The section covers three things:
-Xoutput from run 33104159035 as the worked examplenet.minidev:json-smartwarning, and the first attempted fix went after json-smart. The real failure wasorg.jboss.narayana.jts:idlj-idl-openjdk, viaquarkus-agroal->quarkus-narayana-jta.Written to match the voice of the existing "Why Python first" section, which has the same shape: name the misleading symptom, then say what to actually do.
Documents the workaround only. #2038 items (2) and (3) — whether a newer enforcer than our pinned 3.1.0 propagates the cause, and running
dependency:treeahead ofenforcein CI — are still open, and (2) would make this section unnecessary.Docs only; no build files touched. Independent of #2037 and mergeable in either order.
🤖 Generated with Claude Code
https://claude.ai/code/session_01D71LBYmQNf5J94wPqr81Jx