<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Clojure Q&amp;A - Recent questions tagged deps.edn</title>
<link>https://ask.clojure.org/index.php/tag/deps.edn</link>
<description></description>
<item>
<title>a) how: programmatically set REPL ‘context’ ‘prj-1 aware’? b) how: programmatically switch REPL ‘context’ ‘prj-n aware’?</title>
<link>https://ask.clojure.org/index.php/14422/programmatically-context-programmatically-switch-context</link>
<description>&lt;p&gt;Ok, regardless of editor, running &lt;em&gt;clj&lt;/em&gt; in a directory will start a repl that has &quot;project context&quot; to project deps.edn in &lt;em&gt;that&lt;/em&gt; directory, and that is the way that &lt;em&gt;most&lt;/em&gt; Clojure developers create a &lt;em&gt;connected&lt;/em&gt; repl.&lt;/p&gt;
&lt;p&gt;The implication seems to be to work on a &lt;em&gt;different&lt;/em&gt; project one must (System/exit 0) VM and start another VM using &lt;em&gt;clj&lt;/em&gt; command to ‘create a connected repl’ to project deps.edn in a different directory? This appears to be idiomatically (colloquially) referred to as ‘restarting the REPL’ I believe?&lt;/p&gt;
&lt;p&gt;Seems rather draconian for a dev env, let alone a lisp dev env? I thought the highly dynamic heritage of lisp replete with multiple REPLs was universally sought after? &lt;strong&gt;10 years later&lt;/strong&gt; and no multiple REPLs for clojure? Personally, I’m somewhat surprised, but maybe nobody really wants, needs or requires multiple clojure REPLs? I think multiple REPLs could be transformational in many use cases IMHO, or maybe I’m really ‘out of the loop’ no pun intended?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;03-10-2015&lt;/strong&gt; Clojure stream socket repl discussion (&lt;a rel=&quot;nofollow&quot; href=&quot;https://groups.google.com/g/clojure-dev/c/Dl3Stw5iRVA/m/mgwvmEnjnBoJ&quot;&gt;https://groups.google.com/g/clojure-dev/c/Dl3Stw5iRVA/m/mgwvmEnjnBoJ&lt;/a&gt;) several notable sub-quotes:&lt;/p&gt;
&lt;p&gt;“I think it is important, with tooling, to have the broadest, open notion of the types of 'use cases' for Clojure, and for workflows of people using Clojure, lest you actually limit them. I hope people are able to write their languages and DSLs, test embedded control/debug consoles, design next-generation REPLs and debuggers, grab data dumps etc, all from their REPL. That's the heritage of Lisp. Many people are doing data science, languages, genetics, rule-systems etc type things with Clojure, not just web apps&lt;/p&gt;
&lt;p&gt;But it is quite common in rich Common Lisp IDEs like Lispworks for people to have multiple listener (REPL) sessions open at the same time (against the same runtime). You can launch long running processes that produce streaming output, switch to another listener and continue interaction and development, have separate listeners for separate contexts/state/command-history etc. There's a lot to Lisp development that's not RPC.&lt;/p&gt;
&lt;p&gt;Note multiple listeners, data inspectors and more. Maybe not the latest GUIs, but the capabilities should be a source of inspiration for any Clojure IDE.”&lt;/p&gt;
&lt;p&gt;Previously hinted personal end goal: exploit ‘critical mass’ for a (truly) ‘dynamic’ clojure dev env, including dynamic java recompilation, namespace reloading, etc. and include at a minimum:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;clojure.repl.deps&lt;/li&gt;
&lt;li&gt;clojure.tools.build.api (clojure.tools.build)&lt;/li&gt;
&lt;li&gt;clojure.tools.deps&lt;/li&gt;
&lt;li&gt;clojure.tools.deps.cli.api (clojure.deps.cli)&lt;/li&gt;
&lt;li&gt;clojure.tools.namespace&lt;/li&gt;
&lt;li&gt;clojure.tools.tools.api (clojure.tools.tools)&lt;/li&gt;
&lt;li&gt;GitHub - clj-commons/virgil: Recompile Java code without restarting&lt;br&gt;
the REPL (&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clj-commons/virgil&quot;&gt;https://github.com/clj-commons/virgil&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;other polyglot ‘evaluation/compilation’ TBD&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also included a few tools to help come back up to speed quicker:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub - nubank/morse: A graphical, interactive tool for browsing&lt;br&gt;
Clojure data (&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/nubank/morse&quot;&gt;https://github.com/nubank/morse&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;[clj-ns-browser/clj-ns-browser &quot;2.0.0-SNAPSHOT&quot;] – Clojars&lt;br&gt;
(&lt;a rel=&quot;nofollow&quot; href=&quot;https://clojars.org/clj-ns-browser/versions/2.0.0-SNAPSHOT&quot;&gt;https://clojars.org/clj-ns-browser/versions/2.0.0-SNAPSHOT&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eventually will look at many ‘current projects’ including: GitHub - HumbleUI/HumbleUI: Clojure Desktop UI framework (&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/HumbleUI/HumbleUI&quot;&gt;https://github.com/HumbleUI/HumbleUI&lt;/a&gt;) as stated to build better apps than possible with web, AND access full power of your computer (multithreaded), wouldn’t that be convenient?&lt;/p&gt;
&lt;p&gt;Another quote from &lt;strong&gt;03-10-2015&lt;/strong&gt; Clojure stream socket repl discussion (&lt;a rel=&quot;nofollow&quot; href=&quot;https://groups.google.com/g/clojure-dev/c/Dl3Stw5iRVA/m/IHoVWiJz5UIJ&quot;&gt;https://groups.google.com/g/clojure-dev/c/Dl3Stw5iRVA/m/IHoVWiJz5UIJ&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;“REPL stands for something - Read, Eval, Print, Loop. It does not stand for - Eval RPC Server/Window.”&lt;/p&gt;
&lt;p&gt;Anyway, that would be ERSW, seriously, I couldn’t agree more, a required lisp feature, for me anyway: multiple simultaneous-concurrent (multi-threaded) REPLs, I refer to as ‘Clojure Listeners’ (‘in-process’ or ‘against the same runtime’) non-socket non-nREPL non-LSP non-network non-middleware non-multi-VM based REPL approaches that support multiple simultaneous dev management ‘native VM’ approaches for polyglot projects ala GraalVM.&lt;/p&gt;
&lt;p&gt;[SEE Multiple Clojure Listeners] (&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/mgrisius/clj-mode/blob/0.9/Clojure_Listener_2025-02-23_09-02-41.jpg&quot;&gt;https://github.com/mgrisius/clj-mode/blob/0.9/Clojure_Listener_2025-02-23_09-02-41.jpg&lt;/a&gt;) &lt;/p&gt;
&lt;p&gt;Note JavaScript Listener “JS-1” pictured. Could have python, R, ruby, or whatever language(s) available in GraalVM. ‘Clojure Listeners’ used with or without emacs, ‘regardless of editor’, in any Java VM for that matter. Could easily have multi-threaded socket-based listeners . . .&lt;/p&gt;
&lt;p&gt;Clojure Listeners: multi-threaded, full history, type ahead, line editing, completion, pop-up menus, colorized output, colorized-balanced-brackets-([{, etc. Also working on other listener features: multi-line editing, enhanced source lookup, doc lookup, repo-artifact search, embeddable .e.g. in morse, etc. all leveraging the ‘purest clojure value chain possible’!&lt;/p&gt;
&lt;p&gt;As previously mentioned, my basic ‘old style’ simple.bat with (~60mb) über jar simple compatibility with emacs lisp-inferior-mode works good with ‘legacy’ approach and new ‘CLI deps.edn approach’ basic use so far, both with ~1 second startup time. Zero optimization has been done thus far, e.g. GraalVM native image, etc.&lt;/p&gt;
&lt;p&gt;My forward-looking goal &amp;amp; reason for asking initial question: compatibility with future clojure tool direction(s), NOT invent the next ‘technical debt’ ad hoc one-off hack. My Holy Graal: I want a fully dynamic long running VM under full clojure programmatic control.&lt;/p&gt;
&lt;p&gt;So, the question remains: &lt;strong&gt;a) how to programmatically set REPL with ‘context’ for ‘project-1 aware’? b) how to programmatically switch REPL ‘context’ to ‘project-n aware’?&lt;/strong&gt;&lt;/p&gt;
</description>
<category>Clojure CLI</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14422/programmatically-context-programmatically-switch-context</guid>
<pubDate>Sun, 23 Feb 2025 16:56:50 +0000</pubDate>
</item>
<item>
<title>deps.edn support for :git/branch + :git/sha</title>
<link>https://ask.clojure.org/index.php/14400/deps-edn-support-for-git-branch-git-sha</link>
<description>&lt;p&gt;Are there plans to add a &lt;code&gt;:git/branch&lt;/code&gt; key for Git libs in &lt;code&gt;deps.edn&lt;/code&gt; that works like &lt;code&gt;:git/tag&lt;/code&gt;? In other words, Git refs (&lt;code&gt;:git/branch&lt;/code&gt; or &lt;code&gt;:git/tag&lt;/code&gt;) have to be paired with a Git SHA (&lt;code&gt;:git/sha&lt;/code&gt;) to lock to a specific commit as Git refs can be updated to point to different commits.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:deps {owner/repo {:git/url &quot;https://github.com/owner/repo.git&quot;
                    :git/branch &quot;1.x&quot;
                    :git/sha &quot;2fd4e1c67a2d28fced849ee1bb76e7391b93eb12&quot;}}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The purpose is to support projects using major version branch workflows as compared to tag + release workflows.&lt;/p&gt;
&lt;p&gt;Major version branch workflows may be used for things like private polyrepo projects (e.g. a web service where the API specs/model, backend, and infrastructure-as-code templates are split) that don't need the additional overhead that comes with using tags + releases.&lt;/p&gt;
&lt;p&gt;Auto-update tools like Renovate or Dependabot can use the Git ref key in a &lt;code&gt;deps.edn&lt;/code&gt; Git lib to update its locked &lt;code&gt;:git/sha&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For tag + release workflows, this may be some heuristic like semantic versioning.&lt;/p&gt;
&lt;p&gt;For major version branch workflows, the auto-update tool needs to use something like &lt;code&gt;:git/branch&lt;/code&gt; to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tie break between a given Git SHA's descendants if there's multiple.&lt;/li&gt;
&lt;li&gt;Ignore PR branches on the tip of a given branch (e.g. ignore a PR branch that's a descendant of the tip of the &lt;code&gt;main&lt;/code&gt; branch).&lt;/li&gt;
&lt;/ol&gt;
</description>
<category>Clojure CLI</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14400/deps-edn-support-for-git-branch-git-sha</guid>
<pubDate>Thu, 20 Feb 2025 06:04:47 +0000</pubDate>
</item>
<item>
<title>a) how to start REPL with ‘context’ for ‘project-1 aware’? b) How to switch REPL ‘context’ to ‘project-n aware’?</title>
<link>https://ask.clojure.org/index.php/14392/start-with-context-project-aware-switch-context-project-aware</link>
<description>&lt;p&gt;Been away from clojure for a while, taking a fresh look at CLI &amp;amp; deps tool chain current status, direction &amp;amp; potential work flow(s). Previously maintained linux, macOS &amp;amp; MS Win / WSL2 dev envs, only looking at MS Win clojure right now.&lt;/p&gt;
&lt;p&gt;Dev env includes GraalVM JDK 23, clojure 1.12.0, emacs 27.1 with minimal (ancient) lisp-inferior-mode clj-mode (&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/mgrisius/clj-mode&quot;&gt;https://github.com/mgrisius/clj-mode&lt;/a&gt;), and Apache ant/ivy 1.10.3 for Transitive Dependency Management (TDM), classpath &amp;amp; java command construction. My ‘legacy’ emacs, clojure &amp;amp; java code are operational again.&lt;/p&gt;
&lt;p&gt;Using basic ‘old style’ simple.bat with (~60mb) über jar simple compatibility with emacs lisp-inferior-mode with ~1 second startup time, e.g. m-x eval-expression (run-lisp “simple.bat”):&lt;br&gt;
java -cp E:\dev\projects\simple\target\0.0.1.standalone.jar clojure.main&lt;/p&gt;
&lt;p&gt;Current goals include: convert to CLI &amp;amp; deps tools, among others.&lt;/p&gt;
&lt;p&gt;Installed clj-msi (Clojure 1.12.0.1501) Clojure for Windows 25.5.3460.1501, create basic project, deps.edn etc. Can use CLI from cmd.exe or powershell.exe to execute basic actions: invoke REPL, check versions, download deps, create über jar etc. Command line stuff works good!&lt;/p&gt;
&lt;p&gt;Not sure how best to leverage CLI &amp;amp; deps from a basic .bat file so that the resulting REPL is ‘project aware’, e.g. sees project deps.edn, build.clj, user.clj plus ‘tools.build’ related capabilities? So far, subtle differences between CLI interactive and basic .bat cmd.exe or powershell.exe results.&lt;/p&gt;
&lt;p&gt;As the tools.build Guide states: “We want to write this program with our favorite programming language, Clojure, and tools.build is a library of functions commonly needed for builds that can be connected together in flexible ways. Writing a build program does take a bit more code than other declarative approaches, but can be easily extended or customized far into the future, creating a build that grows with your project.”&lt;/p&gt;
&lt;p&gt;I prefer writing clojure code over complex cross platform compatible (shell) scripts, workarounds or hacks. So, I think I want full CLI functionality to use from the REPL to avoid incidental complexity, e.g. ‘very complicated’ problems discussed in Clojure CLI Reference in ‘Quoting keys and values’ related to platform specific issues wrt cmd.exe or powershell.exe concerns. Overall goal: avoid ‘technical debt’ from ANY platform specific minutiae for ANY shell, e.g. bash/tcsh, cmd.exe, powershell.exe, or even any new emacs lisp to focus solely on investment in purest clojure value chain possible.&lt;/p&gt;
&lt;p&gt;BTW: happily seems like there’s ‘critical mass’ for a (fairly complete) ‘dynamic’ clojure dev env with tools akin to early lisp machine (lispm) (e.g. Symbolics) ‘procedural’ style defsystem.&lt;/p&gt;
&lt;p&gt;Re-read clojure doc a few times, no mention on how a REPL is or s/b connected (‘in-process’) in a single VM with access to a ‘project’ with ‘tools.build’ and related features enabled? Or how to switch ‘build context’ to another ‘project’. Looked at monorepo / Polylith type subprojects that use ‘with-project-root’. Might be a good fit for a ‘mega project’ but doesn’t seem like a good fit (at least to me) for disparate, scattered or loosely coupled projects. Could keep a list of target project dirs and ‘map’ specific build tool process using ‘with-project-root’?&lt;/p&gt;
&lt;p&gt;Also mentioned in tools.build Guide: ‘Parametrized builds’ that s/b easy to use from CLI and via programmatic use to generate :dev :test :debug :deploy :install :prod :maintenance or :whatever actions or artifacts are required in conjunction with a ‘clj -T:build action-name’ approach.  Seems very reasonable, if there was a repeatable initial setup or process to make project deps.edn etc. &amp;amp; tools.build aware at a REPL.&lt;/p&gt;
&lt;p&gt;To summarize, it would be nice to have a minimal .bat file and/or ‘user.clj’ to enable the CLI deps experience/capabilities/tools programmatically via REPL. Am I over thinking or missing anything here? Perhaps by design or maybe it’s too early to ask for normative, idiomatic or canonical recommendations?&lt;/p&gt;
&lt;p&gt;My initial question is a) how to start a REPL with ‘context’ that is ‘project-1 aware’? b) How to switch a REPL ‘context’ to be ‘project-n aware’?&lt;/p&gt;
&lt;p&gt;I apologize I’m just starting out with CLI, deps.edn, tools.build, user.clj, etc. and have not absorbed many of the intricacies re required libraries, operational details, setup and intended use cases. Any suggestions would be greatly appreciated, thanks for sharing any insights!&lt;/p&gt;
</description>
<category>Clojure CLI</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14392/start-with-context-project-aware-switch-context-project-aware</guid>
<pubDate>Mon, 17 Feb 2025 17:14:46 +0000</pubDate>
</item>
<item>
<title>Confusing error message on deps.edn wrong git/url dependency</title>
<link>https://ask.clojure.org/index.php/14283/confusing-error-message-on-deps-edn-wrong-git-url-dependency</link>
<description>&lt;p&gt;When you misspell the &lt;code&gt;:git/url&lt;/code&gt; of a git dependency (or the dep name used to infer a url) the error says :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Cloning: https://github.com/MISSPELLED-ORG-OR-REPO-PATH
Error building classpath. Unable to clone /home/user/.gitlibs/_repos/https/github.com/MISSPELLED-ORG-OR-REPO-PATH
fatal: could not read Username for 'https://github.com': terminal prompts disabled
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I find the the 3 sentences confusing since they mention classpath, a local folder, username, and terminal prompts disabled. &lt;/p&gt;
&lt;p&gt;It would be great if it more clearly can express that no repo could be found with the provided URL, or at least remove the last sentence &lt;code&gt;fatal: could not read Username for 'https://github.com': terminal prompts disabled&lt;/code&gt; which I find misleading.&lt;/p&gt;
&lt;p&gt;Maybe the &lt;code&gt;Unable to clone&lt;/code&gt; could be followed by the url instead of the local folder also?&lt;/p&gt;
</description>
<category>Clojure CLI</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14283/confusing-error-message-on-deps-edn-wrong-git-url-dependency</guid>
<pubDate>Thu, 05 Dec 2024 10:17:00 +0000</pubDate>
</item>
<item>
<title>How can I ensure that a private Maven coordinate cannot be shadowed in a public repository?</title>
<link>https://ask.clojure.org/index.php/14198/ensure-private-coordinate-cannot-shadowed-public-repository</link>
<description>&lt;p&gt;Given a &lt;code&gt;deps.edn&lt;/code&gt; file with a &lt;code&gt;:mvn/repos&lt;/code&gt; entry for a private Maven repository and a dependency on a Maven coordinate that lives in that repository, how can I mitigate the risk of that coordinate getting shadowed / hijacked in one of the default public repositories?&lt;/p&gt;
&lt;p&gt;Possible solutions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Allow pinning a Maven dependency to a particular repository&lt;/li&gt;
&lt;li&gt;Allow declaring priority order of Maven repositories (in the example scenario, the private repository would then get the highest priority and always be checked before the other ones)&lt;/li&gt;
&lt;li&gt;Allow pinning a Maven dependency to a particular signing key and require it be signed (but looks like &lt;code&gt;tools.deps&lt;/code&gt; currently doesn't support verifying signed artifacts?)&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14198/ensure-private-coordinate-cannot-shadowed-public-repository</guid>
<pubDate>Wed, 16 Oct 2024 11:08:07 +0000</pubDate>
</item>
<item>
<title>No way to specify Clojure version across all deps.edn files in a monorepo</title>
<link>https://ask.clojure.org/index.php/14112/way-specify-clojure-version-across-all-deps-files-monorepo</link>
<description>&lt;p&gt;Suppose you have &lt;code&gt;deps.edn&lt;/code&gt; at the root and then a bunch of sub-directories with their own &lt;code&gt;deps.edn&lt;/code&gt; files.&lt;/p&gt;
&lt;p&gt;If you want to have a set of common dependencies for all of the projects, you can simply have e.g. a &lt;code&gt;common&lt;/code&gt; directory where &lt;code&gt;common/deps.edn&lt;/code&gt; specifies all of the common dependencies and all the rest of &lt;code&gt;deps.edn&lt;/code&gt; files list &lt;code&gt;common&lt;/code&gt; as one of their deps.&lt;/p&gt;
&lt;p&gt;However, that doesn't work with &lt;code&gt;org.clojure/clojure&lt;/code&gt;, making it implicitly special.&lt;/p&gt;
&lt;p&gt;As I &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojurians.slack.com/archives/C03S1KBA2/p1725756729831549?thread_ts=1725754474.109679&amp;amp;cid=C03S1KBA2&quot;&gt;mentioned&lt;/a&gt; on Slack, it seems that &lt;code&gt;clojure.tools.deps/root-deps&lt;/code&gt; brings the default top-level version of &lt;code&gt;org.clojure/clojure&lt;/code&gt; and nothing else can override it but another top-level version.&lt;/p&gt;
</description>
<category>Clojure CLI</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14112/way-specify-clojure-version-across-all-deps-files-monorepo</guid>
<pubDate>Sun, 15 Sep 2024 19:46:47 +0000</pubDate>
</item>
<item>
<title>Refresh/Reload deps.edn changes in Calva + VS Code in WSL Ubuntu</title>
<link>https://ask.clojure.org/index.php/14054/refresh-reload-deps-edn-changes-in-calva-vs-code-in-wsl-ubuntu</link>
<description>&lt;p&gt;Hi, I am new to Clojure and am following &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/watch?v=LqVyP_EGKqw&amp;amp;list=PLRGAFpvDgm2ylbXYIjvu3kI426zAP_Lqc&amp;amp;index=1&quot;&gt;this tutorial&lt;/a&gt; to make a Clojure API. This uses Cursive plugin in IntelliJ, but I am using Calva in VS Code.&lt;/p&gt;
&lt;p&gt;This is my project structure: &lt;/p&gt;
&lt;pre&gt;&lt;code&gt; .
├── deps.edn
├── resources
│   └── config.edn
└── src
    └── clojure_api
        ├── config.clj
        └── core.clj
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;My &lt;code&gt;config.clj&lt;/code&gt; file contents:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(ns clojure-api.config
    (:require [aero.core :as aero]
            [clojure.java.io :as io]))

(defn read-config []
  (-&amp;gt; &quot;config.edn&quot;
      (io/resource)
      (aero/read-config)))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I changed my deps.edn file to add the paths &lt;code&gt;src&lt;/code&gt; &amp;amp; &lt;code&gt;resources&lt;/code&gt; like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:deps {aero/aero {:mvn/version &quot;1.1.6&quot;}} :path [&quot;resources&quot; &quot;src&quot;]}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;while keeping the &lt;code&gt;config.edn&lt;/code&gt; file an empty map: &lt;code&gt;{}&lt;/code&gt;. However, I could not read the config file from &lt;code&gt;read-config&lt;/code&gt; function in &lt;code&gt;config.clj&lt;/code&gt;. It gave this error in Calva repl: &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;; Execution error (IllegalArgumentException) at aero.core/read-config-into-tagged-literal (core.cljc:194).
; Cannot open &amp;lt;nil&amp;gt; as a Reader.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The tutorial &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/LqVyP_EGKqw?list=PLRGAFpvDgm2ylbXYIjvu3kI426zAP_Lqc&amp;amp;t=421&quot;&gt;solved this error&lt;/a&gt; in Cursive by refreshing the project structure. I cannot seem to find any such commands in Calva. How can I update/refresh my project structure in Calva so that the &lt;code&gt;deps.edn&lt;/code&gt; changes are reflected in the repl?&lt;/p&gt;
&lt;p&gt;I have tried to restart the repl, reopening the folder in VS code, shuffling the &lt;code&gt;resources&lt;/code&gt; directory around to no avail.&lt;/p&gt;
&lt;p&gt;I could not find related answers to this problem after googling, so any help will be appreciated. &lt;/p&gt;
</description>
<category>Calva</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14054/refresh-reload-deps-edn-changes-in-calva-vs-code-in-wsl-ubuntu</guid>
<pubDate>Mon, 19 Aug 2024 15:16:49 +0000</pubDate>
</item>
<item>
<title>Tagged literals in Clojure CLI arguments and deps.edn</title>
<link>https://ask.clojure.org/index.php/13278/tagged-literals-in-clojure-cli-arguments-and-deps-edn</link>
<description>&lt;p&gt;As it stands there is no way for the Clojure CLI to extend the reader with tagged literals for use within arguments or deps.edn.&lt;/p&gt;
&lt;p&gt;I propose that some mechanism for this should be added, which can enable additional tooling to use the intended use case of putting data within aliases in deps.edn where they otherwise would be restricted by data readers.&lt;/p&gt;
&lt;p&gt;An example of a current project which would benefit from this is Codox, which has support for regular expression based filters on namespaces to be documented, however as the default EDN reader does not include support for regular expressions, this feature is unusable.&lt;/p&gt;
&lt;p&gt;If tagged literals support was added to the Clojure CLI, this problem could be resolved by a &lt;code&gt;#jvm/regex&lt;/code&gt; tag or similar being added for that usecase.&lt;/p&gt;
&lt;p&gt;If this feature is added it should also be considered what happens when a deps.edn file or argument to the CLI includes a tagged literal which is not bound in the current invocation.&lt;/p&gt;
&lt;p&gt;There are multiple ways that support could be added to the CLI, and below I present a few of my own thoughts on the matter, but this is not a request for this to be the way that the feature is implemented, just some ideas.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tagged literals could be added via aliases in the user deps.edn which are then used by default in all projects&lt;/li&gt;
&lt;li&gt;Tagged literals could be specified by an environment variable, which users can then set with direnv or other tooling&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>Clojure CLI</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/13278/tagged-literals-in-clojure-cli-arguments-and-deps-edn</guid>
<pubDate>Tue, 12 Sep 2023 21:02:35 +0000</pubDate>
</item>
<item>
<title>Feature request for Clojure CLI: Some way to specify OS-conditional values for :local/root in deps.edn</title>
<link>https://ask.clojure.org/index.php/13072/feature-request-clojure-specify-conditional-values-local</link>
<description>&lt;p&gt;This problem arose trying to run a Clojure project on WSL2 from a project originally built on Windoze.&lt;/p&gt;
&lt;p&gt;The original :local/root paths started with &quot;C:/...&quot; but on WSL2 (running Ubuntu 22) they need to be converted to &quot;/mnt/c/...&quot; to run.&lt;/p&gt;
&lt;p&gt;Manually changing them makes them work, but it's a hassle. Won't even mention source control woes.&lt;/p&gt;
&lt;p&gt;Imagining automatic conversion rules feels dreadful, it would be better if we could simply specify OS-specific values. Maybe something like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{some.ns/some-lib {:local/root 
                    {:local-path/windows &quot;C:/...&quot; 
                     :local-path/linux &quot;/mnt/c/...&quot; 
                     :local-path/macos &quot;/some/other/dev/path&quot;}}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;At runtime, the correct local-path should be selected for the value based on the OS on which the JVM is running.&lt;/p&gt;
&lt;p&gt;Surely this can also be a problem on MacOS running Parallels, where file system integration is also tight but the Guest OS can have different values for the same paths on the Host. And knowing what these might be a priori is probably not practical, given the Cambrian explosion of Linux distributions, Windows editions, and MacOS versions. It would be the developer's responsibility to set these values based on a concrete development setup. So, IMHO, it would be enough optionally to offer some ability to provide a map with certain high-level OS options in place of a string.&lt;/p&gt;
&lt;p&gt;It also seems obvious to me that these values will always be developer-centric and possibly subject to employer devops policies.&lt;/p&gt;
&lt;p&gt;(Yes, this is my implementation bias, but I would gladly support any general way to handle this problem.)&lt;/p&gt;
</description>
<category>Clojure CLI</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/13072/feature-request-clojure-specify-conditional-values-local</guid>
<pubDate>Sat, 08 Jul 2023 12:57:54 +0000</pubDate>
</item>
<item>
<title>Clojure CLI has a way to specify namespace to REPL like Leiningen :init-ns?</title>
<link>https://ask.clojure.org/index.php/12869/clojure-cli-has-specify-namespace-repl-like-leiningen-init</link>
<description>&lt;p&gt;After installing &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/seancorfield/deps-new&quot;&gt;https://github.com/seancorfield/deps-new&lt;/a&gt; I created a project with the command &lt;code&gt;clojure -Tnew app :name clojure-backend&lt;/code&gt; and followed pedestal component guide &lt;a rel=&quot;nofollow&quot; href=&quot;http://pedestal.io/guides/pedestal-with-component&quot;&gt;http://pedestal.io/guides/pedestal-with-component&lt;/a&gt;. The repo is in: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/cloped/clojure-backend&quot;&gt;https://github.com/cloped/clojure-backend&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I'm trying to achieve the same thing as I used to do on Leiningen project, start my REPL on Cursive on the namespace where the component start function is declared and call it.&lt;/p&gt;
&lt;p&gt;Reading the nREPL doc &lt;a rel=&quot;nofollow&quot; href=&quot;https://nrepl.org/nrepl/usage/server.html&quot;&gt;https://nrepl.org/nrepl/usage/server.html&lt;/a&gt; there is a &lt;code&gt;:init-ns&lt;/code&gt; on Leiningen, that makes this work.&lt;/p&gt;
&lt;p&gt;After some several discussions on Clojure slack thread &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojurians.slack.com/archives/C0744GXCJ/p1681750400843819&quot;&gt;https://clojurians.slack.com/archives/C0744GXCJ/p1681750400843819&lt;/a&gt;, and many attempts to load a desired namespace on Cursive REPL and Clojure CLI we understood that this may be some functionally that could go to Clojure CLI&lt;/p&gt;
&lt;p&gt;Colin helped me to find where this is implemented on Leiningen: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/technomancy/leiningen/blob/24fb93936133bd7fc30c393c127e9e69bb5f2392/src/leiningen/repl.clj#L175-L195&quot;&gt;https://github.com/technomancy/leiningen/blob/24fb93936133bd7fc30c393c127e9e69bb5f2392/src/leiningen/repl.clj#L175-L195&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I'm wondering if this is something that makes sense to Clojure CLI. And if it is I am excited to help implement this to begin my contributions to Clojure community.&lt;/p&gt;
</description>
<category>Clojure CLI</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12869/clojure-cli-has-specify-namespace-repl-like-leiningen-init</guid>
<pubDate>Tue, 18 Apr 2023 01:24:42 +0000</pubDate>
</item>
<item>
<title>Feature request for Clojure CLI: Command to create minimal deps project</title>
<link>https://ask.clojure.org/index.php/12700/feature-request-clojure-command-create-minimal-deps-project</link>
<description>&lt;p&gt;This is for onboarding newcomers, including those for whom installing additional tools is nontrivial. &lt;/p&gt;
&lt;p&gt; From my perspective as a teacher it would be really sweet if an absolutely minimal project could be created with the CLI tools alone. &quot;It must be done by hand or use a 3rd party tool&quot; is an impediment to some of my students, and presumably to other newcomers. In a class setting, with students using different machines and OSes and having different backgrounds, a variety of issues that will seem trivial to developers (such as OSes that add hidden file extensions, editors that encode text, OS path issues, etc.) can produce a lot of discouraging friction.  &lt;/p&gt;
&lt;p&gt;By &quot;absolutely minimal project&quot; I mean a directory containing a deps.edn that contains {}, and also containing a src folder that contains a single subfolder with the same name as the top-level folder, that in turn contains a single file (might as well be called core.clj) that just contains a minimal ns expression, with a namespace name matching the folder and file names, and nothing else.&lt;/p&gt;
&lt;p&gt;I understand that there would be a lot to think about regarding the more general question of whether the CLI tools should support more robust project creation facilities, and if so then what kinds of projects it should create, how this would be organized, etc. But my request here is for something so minimal that I hope it could be considered independently of questions concerning more general facilities. I also hope that this minimal-project-creation feature can be considered independently of the more general issues because I think it would significantly ease the onboarding of some communities of new users.&lt;/p&gt;
</description>
<category>Clojure CLI</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12700/feature-request-clojure-command-create-minimal-deps-project</guid>
<pubDate>Wed, 01 Mar 2023 14:11:45 +0000</pubDate>
</item>
<item>
<title>Feature Request for Clojure CLI: Treat empty deps.edn the same way as a non-existing one</title>
<link>https://ask.clojure.org/index.php/12572/feature-request-clojure-treat-empty-deps-same-non-existing</link>
<description>&lt;p&gt;When &lt;code&gt;clojure&lt;/code&gt; is called from a directory with an empty &lt;code&gt;deps.edn&lt;/code&gt; it exits with a non-zero value. I wonder if it could be considered to treat that situation the same as when there is no deps.edn file at all?&lt;/p&gt;
&lt;p&gt;This would be improve the Calva Ux a great deal. Calva defaults to start clojure-lsp at activation. One  activation trigger is that a Clojure file is opened. Creating a deps.edn file in VS Code will create it as an empty file which the user then can edit. When clojure-lsp starts because of the file creation, clojure is called by clojure-lsp to figure out the classpath. If the file is still empty by then, the command fails, and no clojure-lsp for the user in that session.&lt;/p&gt;
&lt;p&gt;It gets extra important for beginners with Clojure, who we want to instruct how to create a minimal deps.edn project and use a Clojure editor to connect to the REPL. As it is now the instructions get complicated.&lt;/p&gt;
</description>
<category>Clojure CLI</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12572/feature-request-clojure-treat-empty-deps-same-non-existing</guid>
<pubDate>Thu, 19 Jan 2023 21:48:27 +0000</pubDate>
</item>
<item>
<title>Set GITLIBS in deps.edn</title>
<link>https://ask.clojure.org/index.php/12414/set-gitlibs-in-deps-edn</link>
<description>&lt;p&gt;Currently, git libs are cloned to &lt;code&gt;~/.gitlibs&lt;/code&gt; by default, and this can be changed with the environment variable &lt;code&gt;GITLIBS&lt;/code&gt;. (&lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.org/reference/deps_and_cli#_configuration_and_debugging&quot;&gt;See docs&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;It would be helpful if I could set that location via an entry in the repo's deps.edn file, akin to &lt;code&gt;:mvn/local-repo&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;{:mvn/local-repo &quot;local-m2&quot; :gitlibs &quot;gitlibs&quot; :deps {...}}}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If this could be done, I would also appreciate it being available within an alias. This probably would require implementing the same for &lt;code&gt;:mvn/local-rep&lt;/code&gt; first (&lt;a rel=&quot;nofollow&quot; href=&quot;https://ask.clojure.org/index.php/11711/set-mvn-local-repo-via-alias&quot;&gt;see relevant Ask&lt;/a&gt;).&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12414/set-gitlibs-in-deps-edn</guid>
<pubDate>Wed, 30 Nov 2022 15:44:50 +0000</pubDate>
</item>
<item>
<title>Programmatically connect dependencies to the maven repos that provide them</title>
<link>https://ask.clojure.org/index.php/12383/programmatically-connect-dependencies-maven-repos-provide</link>
<description>&lt;p&gt;As a Clojure developer,&lt;br&gt;
I want to be able to link project dependencies to the maven repos that provide them&lt;br&gt;
so that a) tools that work with dependencies (e.g. &lt;code&gt;nvd-clojure&lt;/code&gt;, &lt;code&gt;clj-watson&lt;/code&gt;) have more first-hand information to work with, b) I can easily find out custom maven repos that are no longer used and c) get a better understanding in general of what my project is composed of.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Workaround&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;clj -Sdeps '{:mvn/local-repo &quot;tmp&quot;}' -Stree&lt;/code&gt; uses a custom local maven repo to force a redownload of the jars and provides a way to do the above by looking at the messages (e.g. &lt;code&gt;Downloading: org/clojure/clojure/1.11.1/clojure-1.11.1.pom from central&lt;/code&gt;), so it can be ok in some cases.&lt;/p&gt;
&lt;p&gt;Would you consider simplifying this process by providing a way to get that information as data? I would love to have it in &lt;code&gt;clj -X:deps tree :format :edn&lt;/code&gt; for instance.&lt;/p&gt;
</description>
<category>Clojure CLI</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12383/programmatically-connect-dependencies-maven-repos-provide</guid>
<pubDate>Fri, 11 Nov 2022 20:38:29 +0000</pubDate>
</item>
<item>
<title>Support `:mvn/repos` inside an alias</title>
<link>https://ask.clojure.org/index.php/12367/support-mvn-repos-inside-an-alias</link>
<description>&lt;p&gt;This is similar to &lt;a rel=&quot;nofollow&quot; href=&quot;https://ask.clojure.org/index.php/11711/set-mvn-local-repo-via-alias&quot;&gt;https://ask.clojure.org/index.php/11711/set-mvn-local-repo-via-alias&lt;/a&gt;, sorry if I should have just added a note there instead of opening another question.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;:mvn/repos&lt;/code&gt; does not seem to work inside of an alias either -- only at the top level of &lt;code&gt;deps.edn&lt;/code&gt;. If this is intentional, it would be a nicer experience if CLI logged some sort of &quot;&lt;code&gt;:mvn/repos&lt;/code&gt; is not supported inside of aliases&quot; warning on launch.&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12367/support-mvn-repos-inside-an-alias</guid>
<pubDate>Tue, 08 Nov 2022 19:08:24 +0000</pubDate>
</item>
<item>
<title>Calva project type: shadow-cljs vs deps.edn + shadow-cljs?</title>
<link>https://ask.clojure.org/index.php/11901/calva-project-type-shadow-cljs-vs-deps-edn-shadow-cljs</link>
<description>&lt;p&gt;Hi everyone, I’ve gone through the shadow-cljs quickstart guide in the GitHub repo README and got the desired message in the browser console. Next, I wanted to introduce &lt;code&gt;deps.edn&lt;/code&gt; to the project. I had some (self-inflicted) difficulty in jacking in after adding  &lt;code&gt;deps.edn&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;System details:&lt;br&gt;
OS: WSL2&lt;br&gt;
Java version: OpenJDK 11.0.15&lt;br&gt;
Clojure CLI version: 1.11.1.1113&lt;/p&gt;
&lt;p&gt;With only &lt;code&gt;shadow-cljs.edn&lt;/code&gt; in the project, said file contents are:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;;; shadow-cljs.edn
{:source-paths [&quot;src/dev&quot;
                &quot;src/main&quot;
                &quot;src/test&quot;]
 :dependencies []
 
 :dev-http {8080 &quot;public&quot;}
 :builds {:frontend {:target :browser
                     :modules {:main {:init-fn acme.frontend.app/init}}}}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;At this point, jacking in with Calva using the “shadow-cljs” project type, which both starts and connects to the “:frontend” build, works like a charm. &lt;/p&gt;
&lt;p&gt;As mentioned in the first paragraph, I had difficulty with introducing &lt;code&gt;deps.edn&lt;/code&gt; to the project.&lt;/p&gt;
&lt;p&gt;Add &lt;code&gt;deps.edn&lt;/code&gt; to the main project directory with the following contents:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;;; deps.edn
{:paths [&quot;src/main&quot;
&quot;src/dev&quot;
&quot;src/test&quot;]

 :aliases
 {:cljs {:extra-deps {thheller/shadow-cljs {:mvn/version &quot;2.19.0&quot;}}}}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Change &lt;code&gt;shadow-cljs.edn&lt;/code&gt; to:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; ;; shadow-cljs.edn
    
 {:deps {:aliases [:cljs]}
        
:dev-http {8080 &quot;public&quot;}
        
:builds {:frontend {:target :browser
:modules {:main {:init-fn acme.frontend.app/init}}}}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jacking in with Calva using the “deps.edn + shadow-cljs” project type at this point leads to an error containing “Failed starting cljs repl for build: :frontend. Is the build running and connected?” &lt;/p&gt;
&lt;p&gt;The Calva Connection Log also provides information, including: “shadow-cljs has not been started yet!” and “If you have a shadow-cljs server or watch running then you are not connected to that process.”&lt;/p&gt;
&lt;p&gt;The build doesn’t seem to have been started. What if we run &lt;code&gt;npx shadow-cljs watch frontend&lt;/code&gt; and then tried connecting to the REPL? Same error messages as before.&lt;/p&gt;
&lt;p&gt;It turns out I should’ve instead kept using the “shadow-cljs” project type (in which case the addition of &lt;code&gt;deps.edn&lt;/code&gt; goes down without a hitch).&lt;/p&gt;
&lt;p&gt;This leads me to wonder:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When to use which project type?  &lt;/li&gt;
&lt;li&gt;Which is preferred for a fullstack&lt;br&gt;
project?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to Peter and contributors for Calva!&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11901/calva-project-type-shadow-cljs-vs-deps-edn-shadow-cljs</guid>
<pubDate>Sat, 21 May 2022 19:46:14 +0000</pubDate>
</item>
<item>
<title>Non informative error message if git/sha of  dependency in deps.edn cannot be found</title>
<link>https://ask.clojure.org/index.php/11599/non-informative-error-message-dependency-deps-cannot-found</link>
<description>&lt;p&gt;Having a deps.edn&lt;/p&gt;
&lt;p&gt;&lt;code&gt;{:deps
 {org.clojure/data.csv 
{                       :sha &quot;e5beccad0bafdb8e78f19cba481d4ecef5fabf36&quot;}}}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;(which misses the git/url), I get only a not informative error message aboy a NPE&lt;/p&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;br&gt;
Error building classpath. &lt;br&gt;
java.lang.NullPointerException&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;at clojure.string$starts_with_QMARK_.invokeStatic(string.clj:364)
at clojure.tools.gitlibs.impl$clean_url.invokeStatic(impl.clj:70)
at clojure.tools.gitlibs.impl$git_dir.invokeStatic(impl.clj:85)
at clojure.tools.gitlibs.impl$ensure_git_dir.invokeStatic(impl.clj:106)
at clojure.tools.gitlibs$procure.invokeStatic(gitlibs.clj:61)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This is specially a problem in cases of several coordinates in the deps.end, because it does not give a hint which coordinate has the issue.&lt;/p&gt;
&lt;p&gt;This happens as well in scenarios of a wrong &lt;code&gt;sha&lt;/code&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11599/non-informative-error-message-dependency-deps-cannot-found</guid>
<pubDate>Tue, 22 Feb 2022 17:29:29 +0000</pubDate>
</item>
<item>
<title>How to developing multiple libraries/applications simultaneously?</title>
<link>https://ask.clojure.org/index.php/11594/developing-multiple-libraries-applications-simultaneously</link>
<description>&lt;p&gt;This feels like a rather basic project setup issue. I just wanted to learn from the gurus and get some ideas for the best way to develop libraries in tandem&lt;/p&gt;
&lt;p&gt;I write a lot of little programs and scripts in Clojure and those naturally have lots of little helper functions.  As you write your main script/application you end up tweaking the helpers, covering new corner cases you expose etc. But these helper functions end up being copied around haphazardly between scripts and apps. Things like functions that convert formats or make plots etc. Obviously this isn't ideal!&lt;/p&gt;
&lt;p&gt;I'd like to split these independent helper functions off into their own mini libraries&lt;/p&gt;
&lt;p&gt;One workflow that I've seen is the &quot;monorepo&quot; setup. This is the design used by &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/thi-ng/geom&quot;&gt;thing/geom&lt;/a&gt;. However I think long term this has proven to be a bit problematic b/c Karsten Schmidt ended up having a whole ton of awesome features.. but they're all wrapped up and hidden away in the mono repo. He has a whole matrix library there, and renderers and things for working with 3D geometry etc. etc. But I'm guessing there is a discoverability issue and maybe people don't wanna have to pull in the whole kitchen sink to access one tool in some corner&lt;/p&gt;
&lt;p&gt;Instead I'm trying to find a nice &lt;code&gt;deps.edn&lt;/code&gt; way of doing this but I don't really get what the language designers' expected workflow is.&lt;/p&gt;
&lt;p&gt;There is a way to work with local repos: &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.org/guides/deps_and_cli#_using_local_libraries&quot;&gt;https://clojure.org/guides/deps_and_cli#_using_local_libraries&lt;/a&gt;&lt;br&gt;
And then there is a way to work with remote repos: &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.org/guides/deps_and_cli#_using_git_libraries&quot;&gt;https://clojure.org/guides/deps_and_cli#_using_git_libraries&lt;/a&gt; (or you can work with Maven repos)&lt;/p&gt;
&lt;p&gt;But how do you do both at once..? I obviously need to tweak and add features to the libraries as I work on the application :)  Should I have a local development &lt;code&gt;deps.edn&lt;/code&gt; that points at local folders and then another &lt;code&gt;deps.edn&lt;/code&gt; with remote repos to distribute? (If so, what's the best way to set that up with Cider?)&lt;/p&gt;
&lt;p&gt;Or can I have one &lt;code&gt;deps.edn&lt;/code&gt; that looks locally and then falls back to remote repos if it doesn't find anything?&lt;/p&gt;
&lt;p&gt;Or maybe there is a better alternative I haven't considered?&lt;/p&gt;
&lt;p&gt;Just wondering how people are handling this&lt;/p&gt;
&lt;p&gt;(Also posted here: &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojureverse.org/t/how-to-developing-multiple-libraries-applications-simultaneously/8660&quot;&gt;https://clojureverse.org/t/how-to-developing-multiple-libraries-applications-simultaneously/8660&lt;/a&gt;)&lt;/p&gt;
</description>
<category>Clojure</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11594/developing-multiple-libraries-applications-simultaneously</guid>
<pubDate>Sat, 19 Feb 2022 12:26:48 +0000</pubDate>
</item>
<item>
<title>Will tools.build be released as a jar?</title>
<link>https://ask.clojure.org/index.php/11433/will-tools-build-be-released-as-a-jar</link>
<description>&lt;p&gt;I am developing a library with a dependency on tools.build and I would like to publish it as a jar.  Whilst tools.build is only available as a git dep, I cannot include it as a dependency in my pom file.  A wider discussion on this topic was held on this &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojurians.slack.com/archives/C6QH853H8/p1641381677207800&quot;&gt;slack thread&lt;/a&gt;, where @alexmiller requested that I raise this topic here.&lt;/p&gt;
</description>
<category>tools.build</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11433/will-tools-build-be-released-as-a-jar</guid>
<pubDate>Wed, 05 Jan 2022 15:02:43 +0000</pubDate>
</item>
<item>
<title>tools.deps.graph uses an outdated version of tools.deps.alpha that doesn't support :git/sha coordinates</title>
<link>https://ask.clojure.org/index.php/11376/tools-graph-outdated-version-alpha-doesnt-support-coordinates</link>
<description>&lt;p&gt;Repro deps.edn:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:deps {io.github.clojure/spec-alpha2 {:git/sha &quot;99456b1856a6fd934e2c30b17920bd790dd81775&quot;}}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Running &lt;code&gt;clj -X:project/graph-deps&lt;/code&gt;, where project/graph-deps is the following alias in &lt;code&gt;~/.clojure/deps.edn&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;:project/graph-deps
{:replace-paths []
 :replace-deps  {org.clojure/tools.deps.graph {:mvn/version &quot;1.0.63&quot;}}
 :ns-default    clojure.tools.deps.graph
 :exec-fn       graph
 :exec-args     {:output &quot;project-dependencies-graph.png&quot;
                 :size   true}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Results in:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Library io.github.clojure/spec-alpha2 has missing :sha in coordinate.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Bumping the &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/tools.deps.graph/blob/4a103ca8c510295f1608969a6ad237f23e96d74e/deps.edn#L3&quot;&gt;version of tools.deps.alpha&lt;/a&gt; to 0.12.1090 seems to fix the issue&lt;/p&gt;
</description>
<category>tools.deps.graph</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11376/tools-graph-outdated-version-alpha-doesnt-support-coordinates</guid>
<pubDate>Fri, 10 Dec 2021 12:54:46 +0000</pubDate>
</item>
<item>
<title>Allow absolute paths for file-based Git URLS</title>
<link>https://ask.clojure.org/index.php/11251/allow-absolute-paths-for-file-based-git-urls</link>
<description>&lt;p&gt;&lt;strong&gt;Type:&lt;/strong&gt; Enhancement&lt;br&gt;
&lt;strong&gt;Summary:&lt;/strong&gt; Expand &lt;code&gt;tools.gitlibs&lt;/code&gt; support for local Git URLs&lt;br&gt;
&lt;strong&gt;Description:&lt;/strong&gt;&lt;br&gt;
When specifying a local file-based URL for a Git repo containing a dependency, I encounter the following error when using an absolute URL:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;java.lang.IllegalArgumentException: /path/to/my/repo is not a relative path&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    at clojure.java.io$as_relative_path.invokeStatic(io.clj:414)
    at clojure.java.io$file.invokeStatic(io.clj:426)
    at clojure.java.io$file.invoke(io.clj:418)
    at clojure.lang.ArraySeq.reduce(ArraySeq.java:111)
    at clojure.core$reduce.invokeStatic(core.clj:6829)
    at clojure.java.io$file.invokeStatic(io.clj:418)
    at clojure.tools.gitlibs.impl$git_dir.invokeStatic(impl.clj:59)
    at clojure.tools.gitlibs.impl$ensure_git_dir.invokeStatic(impl.clj:80)
    at clojure.tools.gitlibs$procure.invokeStatic(gitlibs.clj:61)
    at clojure.tools.deps.alpha.extensions.git$fn__1317.invokeStatic(git.clj:98)
    at clojure.tools.deps.alpha.extensions.git$fn__1317.invoke(git.clj:96)
    at clojure.lang.MultiFn.invoke(MultiFn.java:239)
    at clojure.tools.deps.alpha$expand_deps.invokeStatic(alpha.clj:425)
    at clojure.tools.deps.alpha$resolve_deps.invokeStatic(alpha.clj:495)
    at clojure.tools.deps.alpha$calc_basis.invokeStatic(alpha.clj:738)
    ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The requirement of relative URLs makes specifying dependencies more difficult in certain contexts - the specific motivating use case for me is a WSL environment where the Clojure process is running in Ubuntu/WSL but the source code is in the Windows filesystem.&lt;/p&gt;
&lt;p&gt;Alex Miller mentioned on the Clojurians Slack when I mentioned this problem that &quot;that's really a subset of the problem - the code that translates git urls to cache dirs and libs doesn't handle either raw paths or relative urls.&quot;&lt;/p&gt;
</description>
<category>tools.gitlibs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11251/allow-absolute-paths-for-file-based-git-urls</guid>
<pubDate>Fri, 05 Nov 2021 19:24:15 +0000</pubDate>
</item>
<item>
<title>Using a git SHA for a local git dependency?</title>
<link>https://ask.clojure.org/index.php/11250/using-a-git-sha-for-a-local-git-dependency</link>
<description>&lt;p&gt;&lt;strong&gt;Type:&lt;/strong&gt; Enhancement&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; Use git SHAs + tags for local deps&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Currently, when working with local dependencies, I cannot use a git tag to refer to a specific revision of a project. &lt;code&gt;:local/root&lt;/code&gt; only respects the current version of the working tree, which can make using local deps under active development a bit trickier. &lt;/p&gt;
&lt;p&gt;Support for SHAs and tags for local projects which are specified via file-based Git URLs would allow projects consuming local deps to specify the state of those projects unambiguously.&lt;/p&gt;
&lt;p&gt;I previously asked a version of this question on the Clojurians slack and was referred here by Alex Miller.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11250/using-a-git-sha-for-a-local-git-dependency</guid>
<pubDate>Fri, 05 Nov 2021 19:12:28 +0000</pubDate>
</item>
<item>
<title>Resolve git deps via artifactory</title>
<link>https://ask.clojure.org/index.php/11063/resolve-git-deps-via-artifactory</link>
<description>&lt;p&gt;As a follow up to &lt;a rel=&quot;nofollow&quot; href=&quot;https://ask.clojure.org/index.php/8866/using-git-deps-in-a-restricted-environment?show=8866#q8866&quot;&gt;https://ask.clojure.org/index.php/8866/using-git-deps-in-a-restricted-environment?show=8866#q8866&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Given the increasing usage of git deps (eg tools.build) it is increasingly painful to use in corporate environments without direct github access. The majority of such corporates use tools like artifactory which, other than proxy things like maven, also allow proxying GitHub. &lt;/p&gt;
&lt;p&gt;Specifically it allows access, via an API, that will download a specific sha or tag from github as a zip/tar archive. &lt;/p&gt;
&lt;p&gt;In a general sense, could tools.deps be augmented to support this use case? I can see a few scenarios:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Provide a remote/root or remote/archive  that works similar to a local/root, but can source from an arbitrary zip/tar provided by a url&lt;/li&gt;
&lt;li&gt;Similarly allow git deps to resolve from some archive provided from a url&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Since the url will have the tag/sha in it, presumably tools.deps would not need to download it again unless the URL was changed. &lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11063/resolve-git-deps-via-artifactory</guid>
<pubDate>Wed, 15 Sep 2021 13:07:15 +0000</pubDate>
</item>
<item>
<title>How do I effectively use EDN with C/C++?</title>
<link>https://ask.clojure.org/index.php/11014/how-do-i-effectively-use-edn-with-c-c</link>
<description>&lt;p&gt;Hello, I'm very new to Clojure related technologies and I may be asking the wrong question.&lt;/p&gt;
&lt;p&gt;I am looking into making a IPFS like proof of concept using EDN which can be integrated with classical system languages (namely the old duo of C/C++).  I would like to create an interface for C++ that takes a template data structure from compile time and from a filename create and populate a data structure matching that template.  In C, it would be some ugly thing with structs composed of an enum to indicate the current primitive (either a list, set, or bytes), a void pointer, and all that C hackiness. Then from these, similarly have serializes.&lt;/p&gt;
&lt;p&gt;The reason for EDN in particular is that it appears to be a technically superior specification based on it's foundations.  The lack of need for a top level containing data structure, and extensible types look like a very good foundation for any work.  It looks like EDN is missing the same level of support as formats like JSON.  That makes this tough, but I think I can justify contributing something here.  I am looking for a solution that can be reused at some point as a part of a Linux kernel module for embedding this functionality as a file system, but that's a ways off.&lt;/p&gt;
&lt;p&gt;How do I start on this kind of project?  What details am I missing?&lt;/p&gt;
</description>
<category>Contrib libs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11014/how-do-i-effectively-use-edn-with-c-c</guid>
<pubDate>Tue, 07 Sep 2021 01:55:21 +0000</pubDate>
</item>
<item>
<title>Hope tools.deps.alpha add feature for listing available aliases</title>
<link>https://ask.clojure.org/index.php/11007/hope-tools-deps-alpha-add-feature-listing-available-aliases</link>
<description>&lt;p&gt;I think add an option for listing out available aliases will be helpful when there are many alaises.&lt;/p&gt;
&lt;p&gt;Here is my try. &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/seancorfield/dot-clojure/issues/7&quot;&gt;https://github.com/seancorfield/dot-clojure/issues/7&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11007/hope-tools-deps-alpha-add-feature-listing-available-aliases</guid>
<pubDate>Fri, 03 Sep 2021 07:54:40 +0000</pubDate>
</item>
<item>
<title>Support preparing :deps/:extra-deps in aliases</title>
<link>https://ask.clojure.org/index.php/10915/support-preparing-deps-extra-deps-in-aliases</link>
<description>&lt;p&gt;Right now there's no way to prepare dependencies only included as as &lt;code&gt;:deps&lt;/code&gt; or &lt;code&gt;:extra-deps&lt;/code&gt; in aliases with &lt;code&gt;clj -X:deps prep&lt;/code&gt;. Adding support for an &lt;code&gt;:aliases&lt;/code&gt; option that would prepare these be extremely helpful, e.g.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;clj -X:deps prep :aliases '[:my-alias]'&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Real-world use case: at Metabase we have a &lt;code&gt;:drivers&lt;/code&gt; alias that adds several &lt;code&gt;:local/root&lt;/code&gt; data warehouse driver subprojects to our classpath. For our Spark SQL driver we need to AOT a few &lt;code&gt;:gen-class&lt;/code&gt; namespaces that we use as proxy JDBC drivers. Currently we have people run &lt;code&gt;clj -X:deps prep&lt;/code&gt; in multiple directories; a way to pass aliases to prep would let us do this in a single command.&lt;/p&gt;
&lt;p&gt;JIRA Issue: &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/CLJ-2652&quot;&gt;https://clojure.atlassian.net/browse/CLJ-2652&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10915/support-preparing-deps-extra-deps-in-aliases</guid>
<pubDate>Sat, 07 Aug 2021 00:02:41 +0000</pubDate>
</item>
<item>
<title>Add support for BOM (Bill Of Materials) dependencies</title>
<link>https://ask.clojure.org/index.php/10892/add-support-for-bom-bill-of-materials-dependencies</link>
<description>&lt;p&gt;Currently, if you have a dependency that is a BOM on Maven, you have to track down what all the components of that BOM are and list them as explicit, individual dependencies. It would save a lot of detective work and redundancy if t.d.a supported this type of dependency directly.&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10892/add-support-for-bom-bill-of-materials-dependencies</guid>
<pubDate>Mon, 02 Aug 2021 17:08:00 +0000</pubDate>
</item>
<item>
<title>git-resolve-tags doesn't support new format of git coords</title>
<link>https://ask.clojure.org/index.php/10821/git-resolve-tags-doesnt-support-new-format-of-git-coords</link>
<description>&lt;p&gt;With tools.deps v0.12.985+, the &lt;code&gt;:git/url&lt;/code&gt; key is optional for git coords and the &lt;code&gt;:sha&lt;/code&gt; and &lt;code&gt;:tag&lt;/code&gt; keys are renamed to &lt;code&gt;:git/sha&lt;/code&gt; and &lt;code&gt;:git/tag&lt;/code&gt;, respectively. But &lt;code&gt;clj -X:deps git-resolve-tags&lt;/code&gt; doesn't seem to support this new format of git coords yet.&lt;br&gt;
This can be confirmed as follows:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cat deps.edn
{:deps {org.clojure/clojure {:mvn/version &quot;1.10.3&quot;}}
 :aliases
 {:build
  {:override-deps
   {io.github.clojure/tools.build {:git/tag &quot;v0.1.3&quot;}}}}}
$ clj -X:deps git-resolve-tags
Resolving git tags in deps.edn ...
No unresolved tags found.
$
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Whereas:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cat deps.edn
{:deps {org.clojure/clojure {:mvn/version &quot;1.10.3&quot;}}
 :aliases
 {:build
  {:override-deps
   {io.github.clojure/tools.build
    {:git/url &quot;https://github.com/clojure/tools.build.git&quot;
     :tag &quot;v0.1.3&quot;}}}}}
$
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;can be resolved successfully:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ clj -X:deps git-resolve-tags
Resolving git tags in deps.edn ...
Resolved v0.1.3 =&amp;gt; 688245ea6cc8b3b173b79b861938444fcd9e3e1e in https://github.com/clojure/tools.build.git
$
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Probably, the following lines should be updated accordingly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/tools.deps.alpha/blob/8e63e6d03abe346a188dafa884f1fd499b8125ac/src/main/clojure/clojure/tools/deps/alpha/script/resolve_tags.clj#L26&quot;&gt;resolve_tags.clj#L26&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/tools.deps.alpha/blob/8e63e6d03abe346a188dafa884f1fd499b8125ac/src/main/clojure/clojure/tools/deps/alpha/script/resolve_tags.clj#L41&quot;&gt;resolve_tags.clj#L41&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10821/git-resolve-tags-doesnt-support-new-format-of-git-coords</guid>
<pubDate>Fri, 16 Jul 2021 13:30:54 +0000</pubDate>
</item>
<item>
<title>:deps manifest dependencies do not respect :mvn/repos in dependent project</title>
<link>https://ask.clojure.org/index.php/10726/deps-manifest-dependencies-respect-repos-dependent-project</link>
<description>&lt;h2&gt;Problem&lt;/h2&gt;
&lt;p&gt;It's impossible to depend on a deps.edn-based project using git or local dependency when that project uses custom maven repos. Attempts to build classpath for projects depending on such projects will fail.&lt;/p&gt;
&lt;h2&gt;Repro&lt;/h2&gt;
&lt;p&gt;I created a minimal repo that illustrates the issue: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/vlaaad/deps-mvn-repos-repro&quot;&gt;https://github.com/vlaaad/deps-mvn-repos-repro&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It contains 3 deps.edn projects: lib, app-local and app-git.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/vlaaad/deps-mvn-repos-repro/blob/master/lib/deps.edn&quot;&gt;lib&lt;/a&gt; contains a single deps.edn file that defines a custom maven repo and a dependency that pulls from that repo.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/vlaaad/deps-mvn-repos-repro/blob/master/app-local/deps.edn&quot;&gt;app-local&lt;/a&gt; contains a single deps.edn file that defines a :local/root dependency on lib.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/vlaaad/deps-mvn-repos-repro/blob/master/app-git/deps.edn&quot;&gt;app-git&lt;/a&gt; contains a single deps.edn file that defines a :git/url dependency on lib.&lt;/p&gt;
&lt;h3&gt;Expected behavior&lt;/h3&gt;
&lt;p&gt;Running &lt;code&gt;clj -P&lt;/code&gt; should succeed in lib, app-local and app-git projects.&lt;/p&gt;
&lt;h3&gt;Actual behavior&lt;/h3&gt;
&lt;p&gt;Running &lt;code&gt;clj -P&lt;/code&gt; succeeds only in lib and fails in app-local and app-git with the error &quot;Error building classpath. Could not find artifact net.sf.saxon:saxon-dom:jar:9.1.0.8 in central (&lt;a rel=&quot;nofollow&quot; href=&quot;https://repo1.maven.org/maven2/&quot;&gt;https://repo1.maven.org/maven2/&lt;/a&gt;)&quot;&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10726/deps-manifest-dependencies-respect-repos-dependent-project</guid>
<pubDate>Thu, 24 Jun 2021 09:18:22 +0000</pubDate>
</item>
<item>
<title>Could tools.deps.alpha support :jvm-opts via aliases-as-data, the same as :paths/:extra-paths?</title>
<link>https://ask.clojure.org/index.php/10674/could-tools-alpha-support-opts-aliases-data-paths-extra-paths</link>
<description>&lt;p&gt;At work, we have four or five JVM options that are common to almost every invocation of the CLI via aliases in our &lt;code&gt;deps.edn&lt;/code&gt; file. Currently, we have &lt;code&gt;:jvm-opts&lt;/code&gt; duplicated into each alias.&lt;/p&gt;
&lt;p&gt;It would reduce duplication if we could just say &lt;code&gt;:jvm-opts :common-opts&lt;/code&gt; in each alias and have a &lt;code&gt;:common-opts&lt;/code&gt; alias that specified the JVM options in just one place or, even better, if the &lt;code&gt;:jvm-opts&lt;/code&gt; vector could take a mix of keywords and strings and look up the keywords as aliases and merge that data in.&lt;/p&gt;
&lt;p&gt;This would make &lt;code&gt;:jvm-opts&lt;/code&gt; consistent with &lt;code&gt;:paths&lt;/code&gt; and &lt;code&gt;:extra-paths&lt;/code&gt; and help reduce duplication in &lt;code&gt;deps.edn&lt;/code&gt; files.&lt;/p&gt;
&lt;p&gt;In our specific case, we could then do the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;;; under :aliases
:common-jvm-opts [&quot;-Dclojure.core.async.go-checking=true&quot;
                  &quot;-Dclojure.tools.logging.factory=clojure.tools.logging.impl/log4j2-factory&quot;
                  &quot;-XX:-OmitStackTraceInFastThrow&quot;
                  &quot;--illegal-access=warn&quot;]}

;; in a specific alias
:some-alias {
  :jvm-opts [:common-jvm-opts &quot;-Dlogged-future=synchronous&quot;]
}
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10674/could-tools-alpha-support-opts-aliases-data-paths-extra-paths</guid>
<pubDate>Mon, 07 Jun 2021 18:37:03 +0000</pubDate>
</item>
<item>
<title>Issue loading cognitect test-runner dependency in deps.edn: USERAUTH fail.</title>
<link>https://ask.clojure.org/index.php/10242/issue-loading-cognitect-test-runner-dependency-deps-userauth</link>
<description>&lt;p&gt;I am trying to use the Cognitect test-runner dependency to run my tests and I am getting a jgit USERAUTH fail when it tries to clone the dependency.  I can use other test runners but I really want to know what is going on here.  Lots of other people have had this issue, but I haven't found a good explanation of the issue, nor a resolution.  Would appreciate both if anyone can help!&lt;/p&gt;
&lt;p&gt;I'm using:&lt;/p&gt;
&lt;p&gt;Java 8 (tried 11 too)&lt;br&gt;
Mac 10.15.7 (Catalina)&lt;/p&gt;
&lt;p&gt;I have a git ssh key without passcode&lt;/p&gt;
&lt;p&gt;Can someone explain to me what the issue is?  I have an idea that it's to do with jgit/jsch but I don't fully understand what the problem is.&lt;/p&gt;
&lt;p&gt;my &lt;code&gt;deps.edn&lt;/code&gt; :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  {:paths [&quot;src&quot; &quot;resources&quot;]
        :deps {org.clojure/clojure {:mvn/version &quot;1.10.2&quot;}}
        :aliases
         { :test {:extra-paths [&quot;test&quot;]
            :extra-deps {com.cognitect/test-runner
                               {:git/url &quot;https://github.com/cognitect-labs/test-runner.git&quot;
                                :sha &quot;209b64504cb3bd3b99ecfec7937b358a879f55c1&quot;}}
            :main-opts [&quot;-m&quot; &quot;cognitect.test-runner&quot;]}}

   
 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;clj -A:test&lt;/code&gt; output:&lt;/p&gt;
&lt;p&gt;   &amp;gt; Cloning: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/cognitect-labs/test-runner.git&quot;&gt;https://github.com/cognitect-labs/test-runner.git&lt;/a&gt; Error&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; building classpath. git@github.com:cognitect-labs/test-runner.git:
&amp;gt; USERAUTH fail org.eclipse.jgit.api.errors.TransportException:
&amp;gt; git@github.com:cognitect-labs/test-runner.git: USERAUTH fail
&amp;gt;         at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:248)
&amp;gt;         at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:306)
&amp;gt;         at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:200)
&amp;gt;         at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:89)
&amp;gt;         at clojure.tools.gitlibs.impl$call_with_auth.invokeStatic(impl.clj:52)
&amp;gt;         at clojure.tools.gitlibs.impl$call_with_auth.invoke(impl.clj:43)
&amp;gt;         at clojure.tools.gitlibs.impl$git_clone_bare.invokeStatic(impl.clj:73)
&amp;gt;         at clojure.tools.gitlibs.impl$git_clone_bare.invoke(impl.clj:70)
&amp;gt;         at clojure.tools.gitlibs.impl$ensure_git_dir.invokeStatic(impl.clj:112)
&amp;gt;         at clojure.tools.gitlibs.impl$ensure_git_dir.invoke(impl.clj:102)
&amp;gt;         at clojure.tools.gitlibs$resolve.invokeStatic(gitlibs.clj:33)
&amp;gt;         at clojure.tools.gitlibs$resolve.invoke(gitlibs.clj:29)
&amp;gt;         at clojure.tools.gitlibs$procure.invokeStatic(gitlibs.clj:47)
&amp;gt;         at clojure.tools.gitlibs$procure.invoke(gitlibs.clj:41)
&amp;gt;         at clojure.tools.deps.alpha.extensions.git$eval1316$fn__1318.invoke(git.clj:42)
&amp;gt;         at clojure.lang.MultiFn.invoke(MultiFn.java:239)
&amp;gt;         at clojure.tools.deps.alpha$expand_deps.invokeStatic(alpha.clj:422)
&amp;gt;         at clojure.tools.deps.alpha$expand_deps.invoke(alpha.clj:390)
&amp;gt;         at clojure.tools.deps.alpha$resolve_deps.invokeStatic(alpha.clj:495)
&amp;gt;         at clojure.tools.deps.alpha$resolve_deps.invoke(alpha.clj:475)
&amp;gt;         at clojure.tools.deps.alpha$calc_basis.invokeStatic(alpha.clj:648)
&amp;gt;         at clojure.tools.deps.alpha$calc_basis.invoke(alpha.clj:622)
&amp;gt;         at clojure.tools.deps.alpha.script.make_classpath2$run_core.invokeStatic(make_classpath2.clj:91)
&amp;gt;         at clojure.tools.deps.alpha.script.make_classpath2$run_core.invoke(make_classpath2.clj:57)
&amp;gt;         at clojure.tools.deps.alpha.script.make_classpath2$run.invokeStatic(make_classpath2.clj:119)
&amp;gt;         at clojure.tools.deps.alpha.script.make_classpath2$run.invoke(make_classpath2.clj:113)
&amp;gt;         at clojure.tools.deps.alpha.script.make_classpath2$_main.invokeStatic(make_classpath2.clj:169)
&amp;gt;         at clojure.tools.deps.alpha.script.make_classpath2$_main.doInvoke(make_classpath2.clj:140)
&amp;gt;         at clojure.lang.RestFn.applyTo(RestFn.java:137)
&amp;gt;         at clojure.lang.Var.applyTo(Var.java:705)
&amp;gt;         at clojure.core$apply.invokeStatic(core.clj:667)
&amp;gt;         at clojure.main$main_opt.invokeStatic(main.clj:514)
&amp;gt;         at clojure.main$main_opt.invoke(main.clj:510)
&amp;gt;         at clojure.main$main.invokeStatic(main.clj:664)
&amp;gt;         at clojure.main$main.doInvoke(main.clj:616)
&amp;gt;         at clojure.lang.RestFn.applyTo(RestFn.java:137)
&amp;gt;         at clojure.lang.Var.applyTo(Var.java:705)
&amp;gt;         at clojure.main.main(main.java:40) Caused by: org.eclipse.jgit.errors.TransportException:
&amp;gt; git@github.com:cognitect-labs/test-runner.git: USERAUTH fail
&amp;gt;         at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:172)
&amp;gt;         at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:140)
&amp;gt;         at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.&amp;lt;init&amp;gt;(TransportGitSsh.java:280)
&amp;gt;         at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:170)
&amp;gt;         at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:137)
&amp;gt;         at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:123)
&amp;gt;         at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1269)
&amp;gt;         at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:237)
&amp;gt;         ... 37 more Caused by: com.jcraft.jsch.JSchException: USERAUTH fail
&amp;gt;         at com.jcraft.jsch.UserAuthPublicKey.start(UserAuthPublicKey.java:119)
&amp;gt;         at com.jcraft.jsch.Session.connect(Session.java:470)
&amp;gt;         at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:126)
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>Clojure</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10242/issue-loading-cognitect-test-runner-dependency-deps-userauth</guid>
<pubDate>Wed, 24 Feb 2021 10:15:47 +0000</pubDate>
</item>
<item>
<title>Add the CLI equivalent of Leiningen's sample.project.clj</title>
<link>https://ask.clojure.org/index.php/10094/add-the-cli-equivalent-of-leiningens-sample-project-clj</link>
<description>&lt;p&gt;Leiningen has an option to display a fully-populated, well-documented &lt;code&gt;project.clj&lt;/code&gt; file (as the &lt;code&gt;sample.project.clj&lt;/code&gt; file from its installation.&lt;/p&gt;
&lt;p&gt;The Clojure CLI has &lt;code&gt;example-deps.edn&lt;/code&gt; which is laid down as &lt;code&gt;~/.clojure/deps.edn&lt;/code&gt; on first use. It does have some examples but it doesn't have all the possible options shown -- in particular it doesn't show where &lt;code&gt;:jvm-opts&lt;/code&gt; should live (a lot of people seem to expect it to work as a top-level key in &lt;code&gt;deps.edn&lt;/code&gt; despite what the reference docs say about it being part of an alias.&lt;/p&gt;
&lt;p&gt;In addition, &lt;code&gt;example-deps.edn&lt;/code&gt; still refers to &lt;code&gt;-R&lt;/code&gt; and &lt;code&gt;-C&lt;/code&gt; and doesn't mention &lt;code&gt;-X&lt;/code&gt; or &lt;code&gt;-M&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It also, somewhat confusingly, repeats several aliases from the system &lt;code&gt;deps.edn&lt;/code&gt; file as comments, suggesting that those are useful things to uncomment in a user &lt;code&gt;deps.edn&lt;/code&gt; file.&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10094/add-the-cli-equivalent-of-leiningens-sample-project-clj</guid>
<pubDate>Tue, 26 Jan 2021 18:02:50 +0000</pubDate>
</item>
<item>
<title>Could :replace-deps imply :replace-paths [] by default?</title>
<link>https://ask.clojure.org/index.php/9947/could-replace-deps-imply-replace-paths-by-default</link>
<description>&lt;p&gt;If an alias, or tool invocation using -Sdeps, discards a project's deps by using &lt;code&gt;:replace-deps&lt;/code&gt; then there is a good chance that some or all of the project's namespaces become impossible to load due to their requirements now missing from the classpath.&lt;/p&gt;
&lt;p&gt;If there are files in the project's default paths that are auto-loaded by clojure on startup, such as &lt;code&gt;user.clj&lt;/code&gt;, the tool invocation might fail therefore. This can be mitigated by also specifying &lt;code&gt;:replace-paths []&lt;/code&gt;, however this does not seem to be too well known (&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/practicalli/clojure-deps-edn/pull/12&quot;&gt;example 1&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/tonsky/uberdeps/pull/36&quot;&gt;example 2&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; href=&quot;https://ask.clojure.org/index.php/9857/could-option-that-variant-sdeps-avoid-having-specify-alias?show=9935#c9935&quot;&gt;example 3&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;I was wondering whether it is common for tools to replace a project's deps with their own but still use the project's paths? I believe in most cases the tool will be authored with no knowledge of the project it will be used in and should not expect to find anything useful to load from the project's own paths.&lt;/p&gt;
&lt;p&gt;In order to make it easier to set up tool invocations, it would make sense to me to make &lt;code&gt;:replace-deps&lt;/code&gt; imply &lt;code&gt;:replace-paths []&lt;/code&gt; unless otherwise specified, or something along these lines.&lt;/p&gt;
&lt;p&gt;A repro case can be found at &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/imrekoszo/depslink3_2#missing-replace-paths-repro-case&quot;&gt;https://github.com/imrekoszo/depslink3_2#missing-replace-paths-repro-case&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Migrated from &lt;a rel=&quot;nofollow&quot; href=&quot;https://ask.clojure.org/index.php/9857/could-option-that-variant-sdeps-avoid-having-specify-alias?show=9884#a9884&quot;&gt;https://ask.clojure.org/index.php/9857/could-option-that-variant-sdeps-avoid-having-specify-alias?show=9884#a9884&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Edit: update opening paragraph to reference replace-deps as opposed to replace paths. I don't know why I wrote replace-paths there in the first place, this is about problems with replace-deps :)&lt;/p&gt;
&lt;p&gt;Update: not happening, according to Alex: &lt;a rel=&quot;nofollow&quot; href=&quot;https://ask.clojure.org/index.php/11522/x-deps-might-fail-when-user-clj-requires-something?show=11526#c11526&quot;&gt;https://ask.clojure.org/index.php/11522/x-deps-might-fail-when-user-clj-requires-something?show=11526#c11526&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9947/could-replace-deps-imply-replace-paths-by-default</guid>
<pubDate>Tue, 15 Dec 2020 13:06:32 +0000</pubDate>
</item>
<item>
<title>How can teams share common dependencies/tooling across multiple projects with deps.edn?</title>
<link>https://ask.clojure.org/index.php/9849/teams-common-dependencies-tooling-across-multiple-projects</link>
<description>&lt;p&gt;Here's my general problem statement (this applies to a monorepo as well):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;a development team works together on multiple projects that each have their &lt;code&gt;deps.edn&lt;/code&gt; file, and &lt;/li&gt;
&lt;li&gt;those developers have their own preferred tooling configured in their own &lt;code&gt;~/.clojure/deps.edn&lt;/code&gt; file, and &lt;/li&gt;
&lt;li&gt;the team as a whole wants a level of consistency in terms of certain library or tooling versions across multiple projects, by providing some standardized aliases and some &quot;pinned&quot; versions (e.g., &lt;code&gt;:override-deps&lt;/code&gt; or &lt;code&gt;:default-deps&lt;/code&gt;). &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bullets 1. and 2. are supported by the CLI/t.d.a. but there's nowhere to hang the multi-project standardization piece.&lt;/p&gt;
&lt;p&gt;Currently, folks who want 3. are using &lt;code&gt;CLJ_CONFIG&lt;/code&gt; to provide a team-standard &lt;code&gt;deps.edn&lt;/code&gt; file but losing 1. in the process. This is considered a bit of a hack (although &lt;code&gt;CLJ_CONFIG&lt;/code&gt; &lt;em&gt;is documented&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Michiel Borkent notes that his &lt;code&gt;clj-kondo&lt;/code&gt; tool faced a similar problem in terms of where it reads configuration data from and his solution was to provide a command-line argument that specified multiple configuration files to read. A similar approach could be taken with the Clojure CLI, allowing an arbitrary number of &lt;code&gt;deps.edn&lt;/code&gt; files to be combined (after the system + user level ones and before the command-line &lt;code&gt;-Sdeps&lt;/code&gt; data).&lt;/p&gt;
&lt;p&gt;The current &quot;system + user + project + command-line&quot; logic is baked into &lt;code&gt;tools.deps.alpha&lt;/code&gt; itself so this is not just a CLI script change -- and whatever approach is taken to address this needs to be available to tooling that needs to run analysis based on a combined &lt;code&gt;deps.edn&lt;/code&gt; environment under user-specific aliases (as discussed here &lt;a rel=&quot;nofollow&quot; href=&quot;https://ask.clojure.org/index.php/9848/tooling-based-tools-alpha-construct-basis-specified-aliases&quot;&gt;https://ask.clojure.org/index.php/9848/tooling-based-tools-alpha-construct-basis-specified-aliases&lt;/a&gt;).&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9849/teams-common-dependencies-tooling-across-multiple-projects</guid>
<pubDate>Mon, 23 Nov 2020 20:34:46 +0000</pubDate>
</item>
<item>
<title>How do I resolve Maven dependencies for a local jar?</title>
<link>https://ask.clojure.org/index.php/9847/how-do-i-resolve-maven-dependencies-for-a-local-jar</link>
<description>&lt;p&gt;I'm having trouble resolving dependencies from a local .jar file. In short: they resolve when I run the .jar using &lt;code&gt;java -jar&lt;/code&gt;, but they do not when pointing to the .jar in my &lt;code&gt;deps.edn&lt;/code&gt; file. &lt;/p&gt;
&lt;p&gt;The details:&lt;/p&gt;
&lt;p&gt;I can successfully build and run the Java code in the &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/plaid/quickstart/tree/master/java&quot;&gt;Quickstart for plaid-java&lt;/a&gt; repository. This is my command: &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;java -jar target/quickstart-1.0-SNAPSHOT.jar server config.yml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;However, when I include the jar in my &lt;code&gt;deps.edn&lt;/code&gt; and run &lt;code&gt;clj -Spath&lt;/code&gt;, I get this error for each of the .jar's dependencies:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[ERROR] Failed to determine Java version for profile...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is the line that fails in my &lt;code&gt;deps.edn&lt;/code&gt; file: &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;com.plaid/quickstart {:local/root &quot;src/usermanager/java/target/quickstart-1.0-SNAPSHOT.jar&quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It may be worth noting that this project uses Dropwizard. Each dependency in the repository's &lt;code&gt;pom.xml&lt;/code&gt; is listed as: &lt;code&gt;&amp;lt;groupId&amp;gt;io.dropwizard&amp;lt;/groupId&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;artifactId&amp;gt;dropwizard-bom&amp;lt;/artifactId&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;version&amp;gt;${dropwizard.version}&amp;lt;/version&amp;gt;&lt;/code&gt;. The version of Dropwizard resolves as 1.3.2.&lt;/p&gt;
&lt;p&gt;I've tried two additional troubleshooting strategies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;mvn clean package&lt;/code&gt; rebuilds with no problem.&lt;/li&gt;
&lt;li&gt;I've set my &lt;code&gt;JAVA_HOME&lt;/code&gt; env var with no luck.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks in advance!&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9847/how-do-i-resolve-maven-dependencies-for-a-local-jar</guid>
<pubDate>Mon, 23 Nov 2020 16:26:56 +0000</pubDate>
</item>
<item>
<title>clj -M: ignores :extra-paths in alias</title>
<link>https://ask.clojure.org/index.php/9822/clj-m-ignores-extra-paths-in-alias</link>
<description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;it seems there is a bug with using clj -M:foo with :extra-paths in :aliases the classpath seems to not include the extra-paths&lt;/p&gt;
&lt;p&gt;deps.edn&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:aliases
 {:foo
  {:extra-paths [&quot;dev&quot;]
   :main-opts [&quot;-m&quot; &quot;foo&quot;]}}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;dev/foo.clj&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(ns foo)

(defn -main
  [&amp;amp; args]
  (println &quot;hello world&quot;))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When running&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clj -M:foo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We get&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Execution error (FileNotFoundException) at clojure.main/main&lt;br&gt;
(main.java:40). Could not locate foo__init.class, foo.clj or foo.cljc&lt;br&gt;
on classpath.&lt;/p&gt;
&lt;p&gt;Full report at: /tmp/clojure-8075946726191297006.edn&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Whereas&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clj -A:foo -m foo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;gives&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;hello world&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;this difference is also visible via -Spath&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clj -Spath -M:foo
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;&lt;p&gt;src:/home/mark/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar:/home/mark/.m2/repository/org/clojure/spec.alpha/0.2.176/spec.alpha-0.2.176.jar:/home/mark/.m2/repository/org/clojure/core.specs.alpha/0.2.44/core.specs.alpha-0.2.44.jar&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;clj -Spath -A:foo
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;&lt;p&gt;dev:src:/home/mark/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar:/home/mark/.m2/repository/org/clojure/spec.alpha/0.2.176/spec.alpha-0.2.176.jar:/home/mark/.m2/repository/org/clojure/core.specs.alpha/0.2.44/core.specs.alpha-0.2.44.jar&lt;/p&gt;
&lt;/blockquote&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9822/clj-m-ignores-extra-paths-in-alias</guid>
<pubDate>Wed, 18 Nov 2020 00:49:01 +0000</pubDate>
</item>
<item>
<title>Issue with broken packages if repository doesn't resolve properly</title>
<link>https://ask.clojure.org/index.php/9782/issue-broken-packages-repository-doesnt-resolve-properly</link>
<description>&lt;p&gt;My project edn had a old maven link that no longer resolves, since maven switched to https only in 2020:&lt;/p&gt;
&lt;p&gt;:mvn/repos {&quot;central&quot; {:url &quot;&lt;a rel=&quot;nofollow&quot; href=&quot;http://central.maven.org/maven2/&amp;quot;}&quot;&gt;http://central.maven.org/maven2/&quot;}&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When retrieving deps from a new computer, the packages were all failing with errors like:&lt;/p&gt;
&lt;p&gt;Downloading: selmer/selmer/1.12.31/selmer-1.12.31.pom from central&lt;br&gt;
Download corrupted: Checksum validation failed, expected &amp;lt;meta but is ad208edec82716369dab76b6cbca3475a4ae2033&lt;/p&gt;
&lt;p&gt;This was because the downloaded &quot;package&quot; were instead HTML files due to AT&amp;amp;T dnsassist.&lt;/p&gt;
&lt;p&gt;Since the checksum fails, I would expect the package downloaded to be deleted instead of kept as it is (broken html files). I had to delete the entire .m2, fix the repo link, and then redownload to fix.&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9782/issue-broken-packages-repository-doesnt-resolve-properly</guid>
<pubDate>Wed, 11 Nov 2020 16:17:26 +0000</pubDate>
</item>
<item>
<title>Why is the clj mvn-pom task ignoring the -Srepro option?</title>
<link>https://ask.clojure.org/index.php/9669/why-is-the-clj-mvn-pom-task-ignoring-the-srepro-option</link>
<description>&lt;p&gt;I have a user-level deps.edn and a project-level deps.edn. I want to generate a pom.xml file for my project that ignores any dependencies in my user-level deps.edn. The command I have now is:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clj -Srepro -X:deps mvn-pom
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;According to the docs (and to the report provided by &lt;code&gt;-Sverbose&lt;/code&gt;), this should ignore my user-level deps.edn. But I still see the dependencies from my user deps.edn appearing in the generated pom.xml! I've tried this with &lt;code&gt;-Sforce&lt;/code&gt; also and nothing changed. Whether I use &lt;code&gt;-Spom&lt;/code&gt; or &lt;code&gt;-X:deps mvn-pom&lt;/code&gt;, it seems like the &lt;code&gt;-Srepro&lt;/code&gt; option is ignored.&lt;/p&gt;
&lt;p&gt;Here's more info about my environment:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ clj -Srepro -Sverbose -Sdescribe
version      = 1.10.1.697
install_dir  = /usr/local/Cellar/clojure/1.10.1.697
config_dir   = /Users/jming/.clojure
config_paths = /usr/local/Cellar/clojure/1.10.1.697/deps.edn deps.edn
cache_dir    = .cpcache
cp_file      = .cpcache/1655984260.cp

{:version &quot;1.10.1.697&quot;
 :config-files [&quot;/usr/local/Cellar/clojure/1.10.1.697/deps.edn&quot; &quot;deps.edn&quot; ]
 :config-user &quot;&quot;
 :config-project &quot;deps.edn&quot;
 :install-dir &quot;/usr/local/Cellar/clojure/1.10.1.697&quot;
 :config-dir &quot;/Users/jming/.clojure&quot;
 :cache-dir &quot;.cpcache&quot;
 :force false
 :repro true
 :main-aliases &quot;&quot;
 :repl-aliases &quot;&quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;What am I doing wrong? Why does &lt;code&gt;-Srepro&lt;/code&gt; appear to be doing nothing, despite what &lt;code&gt;-Sverbose&lt;/code&gt; says? How can I keep user-level dev dependencies like &lt;code&gt;cljfmt&lt;/code&gt; out of my pom.xml?&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9669/why-is-the-clj-mvn-pom-task-ignoring-the-srepro-option</guid>
<pubDate>Wed, 30 Sep 2020 00:47:30 +0000</pubDate>
</item>
<item>
<title>Proper deps.edn config with -co option of cljs.main</title>
<link>https://ask.clojure.org/index.php/9439/proper-deps-edn-config-with-co-option-of-cljs-main</link>
<description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I am trying translate the following cljs.main options with the CLI:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ clj -m cljs.main          \
      -d public/js/compiled \
      -o public/js/main.js  \
      -O advanced           \
      -c hello-world.core
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Into &lt;code&gt;deps.edn&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:deps {org.clojure/clojurescript {:mvn/version &quot;1.10.764&quot;}
        reagent {:mvn/version &quot;1.0.0-alpha2&quot;}}
 :main &quot;hello-world.core&quot;
 :optimizations :advanced
 :output-dir &quot;public/js/compiled&quot;
 :output-to &quot;public/js/main.js&quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then execute it with:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clj -m cljs.main -co deps.edn
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;However, it doesn't seem to work.&lt;/p&gt;
&lt;p&gt;I also get the following error using the generated &lt;code&gt;main.js&lt;/code&gt; file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;main.js:314 Uncaught TypeError: Cannot read property 'mg' of undefined
    at Mb (main.js:314)
    at Tn (main.js:699)
    at Rn (main.js:698)
    at Nn.h.Me (main.js:718)
    at Function.Wn.A (main.js:710)
    at Nn.h.Le (main.js:718)
    at Function.Wn.j (main.js:710)
    at ep (main.js:761)
    at main.js:761
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Some thoughts&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Am I missing a CLI option? or &lt;code&gt;deps.edn&lt;/code&gt; key/value pair?&lt;/li&gt;
&lt;li&gt;Am I using it wrong; the CLI or &lt;code&gt;deps.edn&lt;/code&gt; or both?&lt;/li&gt;
&lt;li&gt;Or is it not well supported at the moment so I should just stick with the CLI?&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>ClojureScript</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9439/proper-deps-edn-config-with-co-option-of-cljs-main</guid>
<pubDate>Thu, 09 Jul 2020 15:55:05 +0000</pubDate>
</item>
<item>
<title>Allow (transitive) deps.edn dependencies to inherit aliases</title>
<link>https://ask.clojure.org/index.php/9302/allow-transitive-deps-edn-dependencies-to-inherit-aliases</link>
<description>&lt;p&gt;When enabling aliases when starting clojure, would it make sense to propagate those aliases when processing the &lt;code&gt;deps.edn&lt;/code&gt; files of (transitive) dependencies?&lt;/p&gt;
&lt;p&gt;This is related to but different from: &lt;a rel=&quot;nofollow&quot; href=&quot;https://ask.clojure.org/index.php/7843/allow-specifying-aliases-coordinates-that-point-projects&quot;&gt;Allow specifying aliases in coordinates that point to deps.edn projects&lt;/a&gt; (JIRA &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-116&quot;&gt;TDEPS-116&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Use case:&lt;/p&gt;
&lt;p&gt;I'm developing a number of interrelated libraries. One of them, &lt;code&gt;lambdaisland/chui-ui&lt;/code&gt;, has a dev dependency on garden. The released version does not need garden, it contains the compiled css instead. &lt;/p&gt;
&lt;p&gt;&lt;code&gt;chui-ui&lt;/code&gt; is a dependency of &lt;code&gt;chui&lt;/code&gt;, and &lt;code&gt;chui&lt;/code&gt; is a dependency of &lt;code&gt;kaocha-cljs2&lt;/code&gt;. While working on either of these I use &lt;code&gt;:local/root&lt;/code&gt; to set up the dependencies, so that I can easily work across these different sources.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;;; chui-ui
{:aliases
  {:dev {:extra-deps {garden ...}}}}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;;; chui
{:deps {chui-ui {:local/root &quot;modules/chui-ui&quot;}}}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;;; kaocha-cljs2
{:deps {chui {:local/root &quot;../chui&quot;}}}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;But this doesn't work as such, because when I start &lt;code&gt;clojure -A:dev&lt;/code&gt; inside &lt;code&gt;chui&lt;/code&gt; or &lt;code&gt;kaocha-cljs2&lt;/code&gt;, then the garden dependency is not picked up. To make this work I need to copy that &lt;code&gt;:dev&lt;/code&gt; alias with garden to the top level project, even though chui or kaocha-cljs2 are not concerned with garden.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9302/allow-transitive-deps-edn-dependencies-to-inherit-aliases</guid>
<pubDate>Thu, 14 May 2020 07:43:39 +0000</pubDate>
</item>
<item>
<title>clj -m works from shell but not as alias</title>
<link>https://ask.clojure.org/index.php/9034/clj-m-works-from-shell-but-not-as-alias</link>
<description>&lt;p&gt;Running the following at the command line:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clj -Acider -m &quot;nrepl.cmdline&quot; &quot;--middleware&quot; &quot;[refactor-nrepl.middleware/wrap-refactor cider.nrepl/cider-middleware]&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Given:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;:cider {:extra-deps {nrepl {:mvn/version &quot;0.6.0&quot;}
                                refactor-nrepl {:mvn/version &quot;2.5.0-SNAPSHOT&quot;}
                                cider/cider-nrepl {:mvn/version &quot;0.23.0-SNAPSHOT&quot;}}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Works. But moving it to a :main-opts:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;:cider {:extra-deps {nrepl {:mvn/version &quot;0.6.0&quot;}
                                refactor-nrepl {:mvn/version &quot;2.5.0-SNAPSHOT&quot;}
                                cider/cider-nrepl {:mvn/version &quot;0.23.0-SNAPSHOT&quot;}}
                   :main-opts [&quot;-m&quot; &quot;nrepl.cmdline&quot; &quot;--middleware&quot; &quot;[refactor-nrepl.middleware/wrap-refactor cider.nrepl/cider-middleware]&quot;]}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And running:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clj -Acider
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Fails with:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Exception in thread &quot;main&quot; java.lang.RuntimeException: EOF while reading                                                         [5/723]
        at clojure.lang.Util.runtimeException(Util.java:221)                                                                            
        at clojure.lang.EdnReader.readDelimitedList(EdnReader.java:746)                                                                 
        at clojure.lang.EdnReader$VectorReader.invoke(EdnReader.java:672)                                                               
        at clojure.lang.EdnReader.read(EdnReader.java:145)                                                                              
        at clojure.lang.EdnReader.read(EdnReader.java:111)                                                                              
        at clojure.lang.EdnReader.readString(EdnReader.java:67)
        at clojure.edn$read_string.invokeStatic(edn.clj:46)
        at clojure.edn$read_string.invokeStatic(edn.clj:37)
        at clojure.edn$read_string.invoke(edn.clj:37)
        at nrepl.cmdline$parse_cli_values$fn__1275.invoke(cmdline.clj:248)
        at clojure.core$fn__8072$fn__8074.invoke(core.clj:6760)
        at clojure.core.protocols$iter_reduce.invokeStatic(protocols.clj:49)
        at clojure.core.protocols$fn__7839.invokeStatic(protocols.clj:75)
        at clojure.core.protocols$fn__7839.invoke(protocols.clj:75)
        at clojure.core.protocols$fn__7781$G__7776__7794.invoke(protocols.clj:13)
        at clojure.core$reduce.invokeStatic(core.clj:6748)
        at clojure.core$fn__8072.invokeStatic(core.clj:6750)
        at clojure.core$fn__8072.invoke(core.clj:6750)
        at clojure.core.protocols$fn__7860$G__7855__7869.invoke(protocols.clj:175)
        at clojure.core$reduce_kv.invokeStatic(core.clj:6776)
        at clojure.core$reduce_kv.invoke(core.clj:6767)
        at nrepl.cmdline$parse_cli_values.invokeStatic(cmdline.clj:246)
        at nrepl.cmdline$parse_cli_values.invoke(cmdline.clj:242)
        at nrepl.cmdline$args__GT_cli_options.invokeStatic(cmdline.clj:261)
        at nrepl.cmdline$args__GT_cli_options.invoke(cmdline.clj:253)
        at nrepl.cmdline$_main.invokeStatic(cmdline.clj:447)
        at nrepl.cmdline$_main.doInvoke(cmdline.clj:443)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.lang.Var.applyTo(Var.java:702)
        at clojure.core$apply.invokeStatic(core.clj:657)
        at clojure.main$main_opt.invokeStatic(main.clj:317)
        at clojure.main$main_opt.invoke(main.clj:313)
        at clojure.main$main.invokeStatic(main.clj:424)
        at clojure.main$main.doInvoke(main.clj:387)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.lang.Var.applyTo(Var.java:702)
        at clojure.main.main(main.java:37)
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9034/clj-m-works-from-shell-but-not-as-alias</guid>
<pubDate>Wed, 15 Jan 2020 07:18:08 +0000</pubDate>
</item>
<item>
<title>`clj` and `deps.edn` do not support newer ssh private key file formats and key types such as ed25519</title>
<link>https://ask.clojure.org/index.php/8725/deps-support-newer-private-file-formats-types-such-ed25519</link>
<description>&lt;p&gt;&lt;code&gt;clj&lt;/code&gt; and &lt;code&gt;tools.gitlibs&lt;/code&gt; use an old &lt;code&gt;jsch&lt;/code&gt; via &lt;code&gt;jgit&lt;/code&gt; library. &lt;code&gt;jsch&lt;/code&gt; doesn't support all the private &lt;br&gt;
keys formats and key types created by OpenSSH &lt;code&gt;ssh-keygen&lt;/code&gt;. This can cause rather cryptic error messages &lt;br&gt;
(see below of a stacktrace). JGit has added support for these in a recent version by switching jsch to another ssh implementation.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.eclipse.org/JGit/New_and_Noteworthy/5.2&quot;&gt;https://wiki.eclipse.org/JGit/New_and_Noteworthy/5.2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Currently &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/tools.gitlibs/blob/master/pom.xml#L32&quot;&gt;tools.gitlibs&lt;/a&gt; uses &lt;code&gt;org.eclipse.jgit:org.eclipse.jgit&lt;/code&gt; &lt;code&gt;4.10.0.201712302008-r&lt;/code&gt;&lt;br&gt;
when current version for jgit is &lt;code&gt;5.5.1.201910021850-r&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;There have been a bunch of issues related to jsch before &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-91&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-91&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Seems that private keys starting with this line are not supported. And this is what openssh&lt;br&gt;
&lt;code&gt;ssh-keygen&lt;/code&gt; creates by default:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-----BEGIN OPENSSH PRIVATE KEY-----&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;For example this kind of errors happen when using unsupported ssh private key format:&lt;br&gt;
&lt;code&gt;`&lt;/code&gt;&lt;br&gt;
Cloning: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/cognitect-labs/test-runner&quot;&gt;https://github.com/cognitect-labs/test-runner&lt;/a&gt;&lt;br&gt;
Error building classpath. git@github.com:cognitect-labs/test-runner: invalid privatekey: [B@71d55b7e&lt;br&gt;
org.eclipse.jgit.api.errors.TransportException: git@github.com:cognitect-labs/test-runner: invalid privatekey: [B@71d55b7e&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:248)
at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:306)
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:200)
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:89)
at clojure.tools.gitlibs.impl$call_with_auth.invokeStatic(impl.clj:50)
at clojure.tools.gitlibs.impl$call_with_auth.invoke(impl.clj:41)
at clojure.tools.gitlibs.impl$git_clone_bare.invokeStatic(impl.clj:71)
at clojure.tools.gitlibs.impl$git_clone_bare.invoke(impl.clj:68)
at clojure.tools.gitlibs.impl$ensure_git_dir.invokeStatic(impl.clj:110)
at clojure.tools.gitlibs.impl$ensure_git_dir.invoke(impl.clj:100)
at clojure.tools.gitlibs$resolve.invokeStatic(gitlibs.clj:33)
at clojure.tools.gitlibs$resolve.invoke(gitlibs.clj:29)
at clojure.tools.gitlibs$procure.invokeStatic(gitlibs.clj:47)
at clojure.tools.gitlibs$procure.invoke(gitlibs.clj:41)
at clojure.tools.deps.alpha.extensions.git$eval966$fn__968.invoke(git.clj:41)
at clojure.lang.MultiFn.invoke(MultiFn.java:239)
at clojure.tools.deps.alpha$expand_deps.invokeStatic(alpha.clj:181)
at clojure.tools.deps.alpha$expand_deps.invoke(alpha.clj:164)
at clojure.tools.deps.alpha$resolve_deps.invokeStatic(alpha.clj:231)
at clojure.tools.deps.alpha$resolve_deps.invoke(alpha.clj:213)
at clojure.tools.deps.alpha.script.make_classpath$create_classpath.invokeStatic(make_classpath.clj:61)
at clojure.tools.deps.alpha.script.make_classpath$create_classpath.invoke(make_classpath.clj:53)
at clojure.tools.deps.alpha.script.make_classpath$run.invokeStatic(make_classpath.clj:79)
at clojure.tools.deps.alpha.script.make_classpath$run.invoke(make_classpath.clj:72)
at clojure.tools.deps.alpha.script.make_classpath$_main.invokeStatic(make_classpath.clj:118)
at clojure.tools.deps.alpha.script.make_classpath$_main.doInvoke(make_classpath.clj:93)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:705)
at clojure.core$apply.invokeStatic(core.clj:665)
at clojure.main$main_opt.invokeStatic(main.clj:514)
at clojure.main$main_opt.invoke(main.clj:510)
at clojure.main$main.invokeStatic(main.clj:664)
at clojure.main$main.doInvoke(main.clj:616)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:705)
at clojure.main.main(main.java:40)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Caused by: org.eclipse.jgit.errors.TransportException: git@github.com:cognitect-labs/test-runner: invalid privatekey: [B@71d55b7e&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:172)
at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:140)
at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.&amp;lt;init&amp;gt;(TransportGitSsh.java:280)
at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:170)
at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:137)
at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:123)
at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1269)
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:237)
... 35 more
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Caused by: com.jcraft.jsch.JSchException: invalid privatekey: [B@71d55b7e&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;at com.jcraft.jsch.KeyPair.load(KeyPair.java:948)
at com.jcraft.jsch.KeyPair.load(KeyPair.java:561)
at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:40)
at com.jcraft.jsch.JSch.addIdentity(JSch.java:407)
at com.jcraft.jsch.JSch.addIdentity(JSch.java:367)
at org.eclipse.jgit.transport.JschConfigSessionFactory.getJSch(JschConfigSessionFactory.java:320)
at org.eclipse.jgit.transport.JschConfigSessionFactory.createSession(JschConfigSessionFactory.java:257)
at org.eclipse.jgit.transport.JschConfigSessionFactory.createSession(JschConfigSessionFactory.java:188)
at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:119)
... 42 more
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
</description>
<category>tools.gitlibs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/8725/deps-support-newer-private-file-formats-types-such-ed25519</guid>
<pubDate>Sun, 13 Oct 2019 11:37:33 +0000</pubDate>
</item>
<item>
<title>How do you use a private maven repository with deps.edn</title>
<link>https://ask.clojure.org/index.php/8571/how-do-you-use-a-private-maven-repository-with-deps-edn</link>
<description>&lt;p&gt;So I'm trying to play around with deps.edn at work, but we have artifacts in a private maven repo, in leinigen we just specify the maven repo like so&lt;/p&gt;
&lt;p&gt;`:repositories [[&quot;my.datomic.com&quot; {:url      &quot;&lt;a rel=&quot;nofollow&quot; href=&quot;https://my.datomic.com/repo&quot;&gt;https://my.datomic.com/repo&lt;/a&gt;&quot;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;                                :username [:gpg :env/mydatomic_username]
                                :password [:gpg :env/mydatomic_password]}]
             [&quot;releases&quot; {:url           &quot;https://nexus.example.com/content/repositories/releases&quot;
                          :sign-releases false
                          :username      [:gpg :env/nexus_write_username]
                          :password      [:gpg :env/nexus_write_password]}]
             [&quot;snapshots&quot; {:url      &quot;https://nexus.example.com/content/repositories/snapshots&quot;
                           :username [:gpg :env/nexus_write_username]
                           :password [:gpg :env/nexus_write_password]}]]`
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I know that I can specify maven repos in deps.edn with &lt;code&gt;:mvn/repos&lt;/code&gt;, but I don't see a way to get the username and password from the environment&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/8571/how-do-you-use-a-private-maven-repository-with-deps-edn</guid>
<pubDate>Mon, 09 Sep 2019 13:04:05 +0000</pubDate>
</item>
<item>
<title>Failure on github import via deps</title>
<link>https://ask.clojure.org/index.php/8507/failure-on-github-import-via-deps</link>
<description>&lt;p&gt;I'm trying to resurrect an old monzo API wrapper for use in a project, so far I've forked the old repo to &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/slifin/monzo-clj&quot;&gt;https://github.com/slifin/monzo-clj&lt;/a&gt; and now I would like to use my forked version in a Datomic cloud project&lt;/p&gt;
&lt;p&gt;I've added the following keys to my deps.edn (stripped for clarity):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;:deps {
    slifin/monzo-clj {:git/url &quot;https://github.com/slifin/monzo-clj&quot; :sha &quot;54d925c23f62e914fa9e6fa5eb22c3e7040eb304&quot;}}
 }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;but everytime I run clj on the terminal I get this error&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Error building classpath. Manifest type not detected when finding deps for slifin/monzo-clj in coordinate {:git/url &quot;https://github.com/slifin/monzo-clj&quot;, :sha &quot;54d925c23f62e914fa9e6fa5eb22c3e7040eb304&quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;What am I doing wrong?&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/8507/failure-on-github-import-via-deps</guid>
<pubDate>Tue, 03 Sep 2019 17:51:12 +0000</pubDate>
</item>
<item>
<title>Equivalent of Leiningen's :managed-dependencies in deps.edn?</title>
<link>https://ask.clojure.org/index.php/8440/equivalent-of-leiningens-managed-dependencies-in-deps-edn</link>
<description>&lt;p&gt;Leiningen has a feature called &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/technomancy/leiningen/blob/master/doc/MANAGED_DEPS.md&quot;&gt;Managed Dependencies&lt;/a&gt;. This lets  you set a common version for a transitive dependency to be used instead of relying on versions provided by your dependencies. This is useful when you want to specify a version of a library without actually adding a dependency on it. It has a very similar effect (I think) as adding the dependency directly to your Leiningen &lt;code&gt;:dependencies&lt;/code&gt;, but communicates the intention better.&lt;/p&gt;
&lt;p&gt;Is there something similar like this in &lt;code&gt;deps.edn&lt;/code&gt;? A way to specify a version resolution for a dependency without adding it directly to &lt;code&gt;:deps&lt;/code&gt;?&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/8440/equivalent-of-leiningens-managed-dependencies-in-deps-edn</guid>
<pubDate>Thu, 22 Aug 2019 21:42:05 +0000</pubDate>
</item>
</channel>
</rss>