[java] Download 3rd-party Java sources from Maven #310
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.
Finally, a way to download source JARs at runtime. Sister PRs: clojure-emacs/cider-nrepl#911, clojure-emacs/cider#3769.
I tried a few approaches and settled with this one – downloading happens within
class->source-file-url
if*download-sources-jar-fn*
is bound. The caller is expected to bind it to something that eventually invokesdownload-sources-jar-for-coordinates
but can do custom logic and predicates too. I'm not 100% happy with this solution, it feels kinda awkward, but this is the best I could do. I honestly tried to make it strictly "cider-nrepl invokes Orchard", but the amount of repeated work was too much. Common Lisp condition system would actually make this cleaner, but hey, that's what dynamic vars actually are in the end, right?Different ways of downloading is supported. Ultimately, all of them involve spawning subprocesses:
clojure
build tool can invoke the new shinyinvoke-tool
function.clojure
directly.lein
.Orchard doesn't do build tool detection on its own, the caller is expected to pass it explicitly.