<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Clojure Q&amp;A - Recent questions and answers in tools.deps</title>
<link>https://ask.clojure.org/index.php/qa/contrib-libs/tools-deps</link>
<description></description>
<item>
<title>Answered: Concurrency bug in tools.deps use of Aether/Maven libs?</title>
<link>https://ask.clojure.org/index.php/15192/concurrency-bug-in-tools-deps-use-of-aether-maven-libs?show=15205#a15205</link>
<description>&lt;p&gt;In Clojure CLI 1.12.5.1664 I have moved tools.deps to use a single shared context/system/session instead of creating and caching one per thread. The previous mode was attempting to increase isolation when Maven was handling this poorly. In the newer version of these libs, they have made these interface support concurrency better and I believe this will be better.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/15192/concurrency-bug-in-tools-deps-use-of-aether-maven-libs?show=15205#a15205</guid>
<pubDate>Mon, 27 Jul 2026 22:04:28 +0000</pubDate>
</item>
<item>
<title>Answered: How to access non-jar artifacts (aar, zip) downloaded via tools.deps in build.clj?</title>
<link>https://ask.clojure.org/index.php/14862/how-access-non-jar-artifacts-aar-downloaded-tools-deps-build?show=14864#a14864</link>
<description>&lt;p&gt;In tools.build you can find these paths in the :libs key of the basis when you build it, so that would give you the path.&lt;/p&gt;
&lt;p&gt;You can then use &lt;code&gt;unzip&lt;/code&gt; in the tools.build api to help unzipping it. See &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.github.io/tools.build/clojure.tools.build.api.html#var-unzip&quot;&gt;https://clojure.github.io/tools.build/clojure.tools.build.api.html#var-unzip&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14862/how-access-non-jar-artifacts-aar-downloaded-tools-deps-build?show=14864#a14864</guid>
<pubDate>Wed, 24 Dec 2025 18:03:56 +0000</pubDate>
</item>
<item>
<title>`create-basis` silently accepts missing aliases</title>
<link>https://ask.clojure.org/index.php/14584/create-basis-silently-accepts-missing-aliases</link>
<description>&lt;p&gt;In &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojars/clojars-web/commit/baade8967c7be8abd9a9b27499c511efd41f6164&quot;&gt;this scenario&lt;/a&gt;, the alias for &lt;code&gt;create-basis&lt;/code&gt; was incorrect, preventing security deps overrides from being applied. For 2 years clojars was deployed with these vulnerable deps.&lt;/p&gt;
&lt;p&gt;In this case, I proposed &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojars/clojars-web/pull/906&quot;&gt;to inline the alias&lt;/a&gt; into &lt;code&gt;:deps&lt;/code&gt;. However there may be other scenarios where a tools.deps change might be helpful to catch these mistakes earlier, for example a warning or error.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14584/create-basis-silently-accepts-missing-aliases</guid>
<pubDate>Tue, 10 Jun 2025 00:57:37 +0000</pubDate>
</item>
<item>
<title>unable to use add-lib on io.github.borkdude/grasp</title>
<link>https://ask.clojure.org/index.php/14342/unable-to-use-add-lib-on-io-github-borkdude-grasp</link>
<description>&lt;p&gt;repro:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;user=&amp;gt; (add-lib 'io.github.borkdude/grasp {:mvn/version &quot;0.1.4&quot;})
Execution error (ExceptionInfo) at clojure.tools.deps.interop/invoke-tool (interop.clj:81).
Could not find artifact org.clojure:clojure:jar:1.11.0-rc1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This seems strange to me. The deps edn of grasp: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/borkdude/grasp/blob/master/deps.edn&quot;&gt;https://github.com/borkdude/grasp/blob/master/deps.edn&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:deps {org.babashka/sci {:mvn/version &quot;0.3.2&quot;}}
 :aliases {:native {:jvm-opts [&quot;-Dclojure.compiler.direct-linking=true&quot;]
                    :extra-deps {org.clojure/clojure {:mvn/version &quot;1.10.2-alpha3&quot;}
                                 org.clojure/tools.cli {:mvn/version &quot;1.0.194&quot;}}}
           :test {:extra-paths [&quot;test&quot;]
                  :extra-deps {org.clojure/clojure {:mvn/version &quot;1.11.0-rc1&quot;}
                               cognitect-labs/test-runner
                               {:git/url &quot;https://github.com/cognitect-labs/test-runner&quot;
                                :sha &quot;cb96e80f6f3d3b307c59cbeb49bb0dcb3a2a780b&quot;}}
                  :main-opts [&quot;-m&quot; &quot;cognitect.test-runner&quot;]}}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It's surprising to me that deps in the &lt;code&gt;:test&lt;/code&gt; alias would cause issues.&lt;/p&gt;
&lt;p&gt;EDIT: seems to work now. Here's the stacktrace from a socket repl where i first encountered it&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;user=&amp;gt; (add-lib 'io.github.borkdude/grasp {:mvn/version &quot;0.1.4&quot;})
Execution error (ExceptionInfo) at clojure.tools.deps.interop/invoke-tool (interop.clj:81).
Could not find artifact org.clojure:clojure:jar:1.11.0-rc1
user=&amp;gt; nil
user=&amp;gt; (pst)
ExceptionInfo Could not find artifact org.clojure:clojure:jar:1.11.0-rc1 {:via [{:type clojure.lang.ExceptionInfo, :message &quot;Could not find artifact org.clojure:clojure:jar:1.11.0-rc1&quot;, :data {:lib org.clojure/clojure, :coord {:mvn/version &quot;1.11.0-rc1&quot;, :deps/manifest :mvn, :dependents [io.github.borkdude/grasp], :parents #{[io.github.borkdude/grasp]}}}, :at [clojure.tools.deps.extensions.maven$get_artifact invokeStatic &quot;maven.clj&quot; 167]}], :trace [[clojure.tools.deps.extensions.maven$get_artifact invokeStatic &quot;maven.clj&quot; 167] [clojure.tools.deps.extensions.maven$get_artifact invoke &quot;maven.clj&quot; 155] [clojure.tools.deps.extensions.maven$eval1225$fn__1228 invoke &quot;maven.clj&quot; 178] [clojure.lang.MultiFn invoke &quot;MultiFn.java&quot; 244] [clojure.tools.deps$download_libs$fn__802$fn__803 invoke &quot;deps.clj&quot; 466] [clojure.lang.AFn applyToHelper &quot;AFn.java&quot; 152] [clojure.lang.AFn applyTo &quot;AFn.java&quot; 144] [clojure.core$apply invokeStatic &quot;core.clj&quot; 667] [clojure.core$with_bindings_STAR_ invokeStatic &quot;core.clj&quot; 1990] [clojure.core$with_bindings_STAR_ doInvoke &quot;core.clj&quot; 1990] [clojure.lang.RestFn invoke &quot;RestFn.java&quot; 428] [clojure.lang.AFn applyToHelper &quot;AFn.java&quot; 156] [clojure.lang.RestFn applyTo &quot;RestFn.java&quot; 135] [clojure.core$apply invokeStatic &quot;core.clj&quot; 671] [clojure.core$bound_fn_STAR_$fn__5837 doInvoke &quot;core.clj&quot; 2020] [clojure.lang.RestFn invoke &quot;RestFn.java&quot; 400] [clojure.lang.AFn call &quot;AFn.java&quot; 18] [java.util.concurrent.FutureTask run &quot;FutureTask.java&quot; 317] [java.util.concurrent.ThreadPoolExecutor runWorker &quot;ThreadPoolExecutor.java&quot; 1144] [java.util.concurrent.ThreadPoolExecutor$Worker run &quot;ThreadPoolExecutor.java&quot; 642] [java.lang.Thread run &quot;Thread.java&quot; 1583]], :cause &quot;Could not find artifact org.clojure:clojure:jar:1.11.0-rc1&quot;, :data {:lib org.clojure/clojure, :coord {:mvn/version &quot;1.11.0-rc1&quot;, :deps/manifest :mvn, :dependents [io.github.borkdude/grasp], :parents #{[io.github.borkdude/grasp]}}}}
	clojure.tools.deps.interop/invoke-tool (interop.clj:81)
	clojure.tools.deps.interop/invoke-tool (interop.clj:41)
	clojure.repl.deps/add-libs (deps.clj:48)
	clojure.repl.deps/add-lib (deps.clj:59)
	clojure.repl.deps/add-lib (deps.clj:59)
	user/eval310956 (NO_SOURCE_FILE:320)
	user/eval310956 (NO_SOURCE_FILE:320)
	clojure.lang.Compiler.eval (Compiler.java:7700)
	clojure.lang.Compiler.eval (Compiler.java:7655)
	clojure.core/eval (core.clj:3232)
	clojure.core/eval (core.clj:3228)
	user/eval257807/fn--257810 (NO_SOURCE_FILE:8)
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14342/unable-to-use-add-lib-on-io-github-borkdude-grasp</guid>
<pubDate>Fri, 17 Jan 2025 14:15:15 +0000</pubDate>
</item>
<item>
<title>Answered: 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?show=14219#a14219</link>
<description>&lt;p&gt;The main current answer is that the public repos are trying to prevent this.&lt;/p&gt;
&lt;p&gt;There are two public repos included in the root deps.edn - Maven Central and Clojars. All other repos must be explicitly included in the top-level deps.edn in use (transitive deps.edn repos are ignored - this differs from pom.xml).&lt;/p&gt;
&lt;p&gt;Maven Central has policies to encourage using reverse domain names and/or trademarked names that you control, with requirements for verification. Clojars is now doing similar things, but their naming policies are somewhat laxer and I don't know the current state of everything they are doing.&lt;/p&gt;
&lt;p&gt;The signing key stuff is problematic for lots of reasons (clojars doesn't require, keys must be registered - how do you know if the key you find is one you should trust, etc). This requires a lot of manual intervention. I have been following &lt;a rel=&quot;nofollow&quot; href=&quot;https://slsa.dev/&quot;&gt;SLSA&lt;/a&gt; which I think is taking a smarter approach to provenance and verification. Would love to spend some time really working on how to integrate something like this into both our Clojure build systems and our dependency management tools to work together. Especially for open source libraries distributed as source, we should be able to hash+compare the actual source and relate it to a commit - Clojure's options are WAY BETTER than compile-to-class langs that make new artifacts different than the original source.&lt;/p&gt;
&lt;p&gt;Hoping to spend some time on this kind of stuff next year.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14198/ensure-private-coordinate-cannot-shadowed-public-repository?show=14219#a14219</guid>
<pubDate>Fri, 01 Nov 2024 18:03:32 +0000</pubDate>
</item>
<item>
<title>Answered: clj -X:deps find-versions prefers git deps if both git and mvn exist</title>
<link>https://ask.clojure.org/index.php/14106/clj-deps-find-versions-prefers-git-deps-both-git-and-mvn-exist?show=14114#a14114</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-268&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-268&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14106/clj-deps-find-versions-prefers-git-deps-both-git-and-mvn-exist?show=14114#a14114</guid>
<pubDate>Tue, 17 Sep 2024 02:44:25 +0000</pubDate>
</item>
<item>
<title>Answered: Allow specifying aliases in coordinates that point to deps.edn projects</title>
<link>https://ask.clojure.org/index.php/7843/allow-specifying-aliases-coordinates-that-point-projects?show=14047#a14047</link>
<description>&lt;p&gt;I just stumbled upon this very same old &lt;code&gt;tools.deps&lt;/code&gt; issue myself with a Polylith workspace recently, when I decided to factor out a few sub-projects into Polylith workspaces of their own. But, since poly has a convention to keep all dev-time dependencies under the &lt;code&gt;:dev&lt;/code&gt; alias, things didn’t click (quite obviously), so I had to duplicate them under the &lt;code&gt;:deps&lt;/code&gt; key.&lt;/p&gt;
&lt;p&gt;I’m now thinking about patching the &lt;code&gt;tools.deps&lt;/code&gt; and using a patched version locally solely for this project.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/7843/allow-specifying-aliases-coordinates-that-point-projects?show=14047#a14047</guid>
<pubDate>Thu, 08 Aug 2024 10:23:08 +0000</pubDate>
</item>
<item>
<title>Answered: Transitive dependency resolution skipping some libs</title>
<link>https://ask.clojure.org/index.php/13758/transitive-dependency-resolution-skipping-some-libs?show=13768#a13768</link>
<description>&lt;p&gt;This description doesn't make sense to me - in both branches &quot;general/some-lib :mvn/version 1.0&quot; exists and should be included with its own transitive deps, so it feels like something has been lost here in the process of redacting. In particular, I'm also wondering if there are :exclusions at any point in the tree.&lt;/p&gt;
&lt;p&gt;It would be helpful if you could narrow the deps tree to whatever the equivalent is above, capture a trace with -Strace and send a gist of the trace.edn (redacted if necessary). I understand if redaction is necessary, but the closer I can get to the original, the easier it will be for me to understand what's happening. You can send dm on Clojurians Slack or email too if that's better.&lt;/p&gt;
&lt;p&gt;You might also find this page helpful, particularly the orphans section:&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.org/reference/dep_expansion&quot;&gt;https://clojure.org/reference/dep_expansion&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/13758/transitive-dependency-resolution-skipping-some-libs?show=13768#a13768</guid>
<pubDate>Tue, 27 Feb 2024 23:05:38 +0000</pubDate>
</item>
<item>
<title>Answered: Improve error message for tools.deps when m2 permissions do not allow write</title>
<link>https://ask.clojure.org/index.php/13649/improve-error-message-tools-deps-when-permissions-allow-write?show=13650#a13650</link>
<description>&lt;p&gt;This is a common issue when you mount ~/.m2 and friends into Docker using a volume in order to avoid downloading artifacts all over again. If something gets downloaded inside docker anyhow, that file might be written as root into the users home directory. I also run into this at least a couple of times over the years. Last time last week. :slightly_smiling_face: Not a Docker expert either, and I may be doing something wrong with it. When this happens it is not obvious what happened, and you are luck when you remember that you have been there.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/13649/improve-error-message-tools-deps-when-permissions-allow-write?show=13650#a13650</guid>
<pubDate>Mon, 29 Jan 2024 18:31:57 +0000</pubDate>
</item>
<item>
<title>Answered: how to convert deps,edn file to pom.xml file i am using leiningen</title>
<link>https://ask.clojure.org/index.php/13369/how-to-convert-deps-edn-file-to-pom-xml-file-am-using-leiningen?show=13370#a13370</link>
<description>&lt;p&gt;If you have the official Clojure CLI installed, you can run:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clojure -X:deps mvn-pom
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;to produce a &lt;code&gt;pom.xml&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;If you're using Leiningen, don't you already have a &lt;code&gt;project.clj&lt;/code&gt; file, and Leiningen will produce a &lt;code&gt;pom.xml&lt;/code&gt; file from that.&lt;/p&gt;
&lt;p&gt;Otherwise, perhaps you can provide more background on what your situation is - how your project is set up and what, exactly, you are trying to do?&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/13369/how-to-convert-deps-edn-file-to-pom-xml-file-am-using-leiningen?show=13370#a13370</guid>
<pubDate>Mon, 09 Oct 2023 23:45:58 +0000</pubDate>
</item>
<item>
<title>Answered: Support of Maven Password Encryption in tools.deps</title>
<link>https://ask.clojure.org/index.php/13320/support-of-maven-password-encryption-in-tools-deps?show=13321#a13321</link>
<description>&lt;p&gt;You are correct in that tools.deps does not currently support encrypted Maven passwords in the settings.xml. I have logged a jira for this at &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-255&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-255&lt;/a&gt;.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/13320/support-of-maven-password-encryption-in-tools-deps?show=13321#a13321</guid>
<pubDate>Mon, 25 Sep 2023 13:47:37 +0000</pubDate>
</item>
<item>
<title>Abstract env var reading in tools.deps</title>
<link>https://ask.clojure.org/index.php/13300/abstract-env-var-reading-in-tools-deps</link>
<description>&lt;p&gt;I have a Cursive user wanting to use the &lt;code&gt;CLOJURE_CLI_ALLOW_HTTP_REPO &lt;/code&gt; env var. Since Cursive invokes tools.deps in-process, there's no way for me to set an env var in the current process. deps.clj has a &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/borkdude/deps.clj/blob/441a53821f6106ea86f33c0e9431110cb713c2e7/deps.clj#L239-L242&quot;&gt;nice abstraction&lt;/a&gt; for this - would it be possible to use this or something similar for tools.deps too? I assume this problem will affect any process using tools.deps as a library.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/13300/abstract-env-var-reading-in-tools-deps</guid>
<pubDate>Sat, 16 Sep 2023 02:35:57 +0000</pubDate>
</item>
<item>
<title>Answered: Can deps.edn tools opt-out of arguments parsing?</title>
<link>https://ask.clojure.org/index.php/13092/can-deps-edn-tools-opt-out-of-arguments-parsing?show=13093#a13093</link>
<description>&lt;p&gt;We don't plan to make any of the arg parsing optional - the -X and -T execution have a point of view, and tools not subscribing to this should use -M -m which gives you full control over arg parsing.&lt;/p&gt;
&lt;p&gt;The clojure.run.exec ns is injected in the Clojure CLI (the code itself is in the brew-install repo). It's not easily available (somewhat intentionally) for external use as we have been evolving it over time and have not committed to a public api for that yet. I do expect that eventually it will be available, either in Clojure lib itself (which would make it analogous to clojure.main) or as a separate tiny lib.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/13092/can-deps-edn-tools-opt-out-of-arguments-parsing?show=13093#a13093</guid>
<pubDate>Tue, 18 Jul 2023 13:08:46 +0000</pubDate>
</item>
<item>
<title>Answered: should we not archive the clojure/tools.deps.alpha repository?</title>
<link>https://ask.clojure.org/index.php/13088/should-not-archive-the-clojure-tools-deps-alpha-repository?show=13089#a13089</link>
<description>&lt;p&gt;There may still be existing tools using it still. Is there any benefit to archiving other than as a usage signal?&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/13088/should-not-archive-the-clojure-tools-deps-alpha-repository?show=13089#a13089</guid>
<pubDate>Sun, 16 Jul 2023 23:30:49 +0000</pubDate>
</item>
<item>
<title>Answered: Pop thread bindings correctly</title>
<link>https://ask.clojure.org/index.php/12880/pop-thread-bindings-correctly?show=12974#a12974</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-249&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-249&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12880/pop-thread-bindings-correctly?show=12974#a12974</guid>
<pubDate>Tue, 30 May 2023 14:34:25 +0000</pubDate>
</item>
<item>
<title>Answered: Using deps/root with local/root</title>
<link>https://ask.clojure.org/index.php/12913/using-deps-root-with-local-root?show=12914#a12914</link>
<description>&lt;p&gt;Yes, should implement this.&lt;/p&gt;
&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-246&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-246&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12913/using-deps-root-with-local-root?show=12914#a12914</guid>
<pubDate>Thu, 04 May 2023 12:53:55 +0000</pubDate>
</item>
<item>
<title>Answered: Specify an alias that is a set of other aliases?</title>
<link>https://ask.clojure.org/index.php/10564/specify-an-alias-that-is-a-set-of-other-aliases?show=12842#a12842</link>
<description>&lt;p&gt;This would be mighty useful for linting.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clj -M:eastwood:kibit:antq
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;could be&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clj -M:lint
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10564/specify-an-alias-that-is-a-set-of-other-aliases?show=12842#a12842</guid>
<pubDate>Thu, 06 Apr 2023 05:10:34 +0000</pubDate>
</item>
<item>
<title>Answered: NullPointerException with tools.deps and find-versions</title>
<link>https://ask.clojure.org/index.php/12823/nullpointerexception-with-tools-deps-and-find-versions?show=12826#a12826</link>
<description>&lt;p&gt;Yep, will fix. Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-245&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-245&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12823/nullpointerexception-with-tools-deps-and-find-versions?show=12826#a12826</guid>
<pubDate>Thu, 30 Mar 2023 21:51:31 +0000</pubDate>
</item>
<item>
<title>Tools deps perform sanity checking on deps.edn file</title>
<link>https://ask.clojure.org/index.php/12803/tools-deps-perform-sanity-checking-on-deps-edn-file</link>
<description>&lt;p&gt;Peform validation of deps.edn files, providing useful error messages and information about misspelled keywords, invalid types, valid data in the wrong location.&lt;/p&gt;
&lt;p&gt;Some motivating examples:&lt;/p&gt;
&lt;p&gt;misspelled keywords: &lt;br&gt;
&lt;code&gt;:overide-deps&lt;/code&gt;&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://groups.google.com/g/clojure/c/g-Gy3Q7jHfk&quot;&gt;https://groups.google.com/g/clojure/c/g-Gy3Q7jHfk&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;including valid options in incorrect locations&lt;/p&gt;
&lt;p&gt;&lt;code&gt;:jvm-opts&lt;/code&gt; in the top level&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://app.slack.com/client/T03RZGPFR/C6QH853H8&quot;&gt;https://app.slack.com/client/T03RZGPFR/C6QH853H8&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;invalid data types in valid edn files:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;{:deps 
  :org.clojure/tools.reader {:mvn/version &quot;1.2.3&quot;}
  org.clojure/tools.reader {mvn/version &quot;1.2.3&quot;}}&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;first dep has a keyword where a symbol should be present&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;second dep has a symbol where a keyword should be present&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For implementation&lt;br&gt;
spell-spec is a great tool to do this&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/bhauman/spell-spec&quot;&gt;https://github.com/bhauman/spell-spec&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;related JIRA ticket&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-238&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-238&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12803/tools-deps-perform-sanity-checking-on-deps-edn-file</guid>
<pubDate>Thu, 23 Mar 2023 19:46:07 +0000</pubDate>
</item>
<item>
<title>Answered: How to fix error 'could not acquire write lock for 'artifact:org.bytedeco:opencv:4.5.5-1.5.7' ?</title>
<link>https://ask.clojure.org/index.php/12730/error-could-acquire-write-lock-artifact-org-bytedeco-opencv?show=12769#a12769</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-244&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-244&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12730/error-could-acquire-write-lock-artifact-org-bytedeco-opencv?show=12769#a12769</guid>
<pubDate>Tue, 14 Mar 2023 14:50:45 +0000</pubDate>
</item>
<item>
<title>Answered: Can clojure.tools.deps.script.make-classpath2/run-core be considered a public API?</title>
<link>https://ask.clojure.org/index.php/12679/clojure-tools-deps-script-make-classpath2-considered-public?show=12682#a12682</link>
<description>&lt;p&gt;No, this class is not public API, and has regularly changed in breaking ways (and is about to do so again). I'm planning to move it out of tools.deps entirely and into the installer project as it's a facet of the CLI, not part of tools.deps.&lt;/p&gt;
&lt;p&gt;Really, you should be going through clojure.tools.deps/create-basis for most functionality. I'm aware that there are some gaps between what's in make-classpath2/run-core and create-basis and I will shortly close that distance by enhancing some of the data returned in create-basis (in particular adding the basis config and merged argmap to provide access to jvm / main / exec info).&lt;/p&gt;
&lt;p&gt;After that, the major differences between these will be: 1) supporting deprecated CLI stuff (some of which is going away now, some later) and 2) -T support, which really should be more directly supported in the deps api, but that's going to wait for a bit longer. Ultimately, make-classpath2 will use create-basis - that's where this is going.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12679/clojure-tools-deps-script-make-classpath2-considered-public?show=12682#a12682</guid>
<pubDate>Wed, 22 Feb 2023 14:30:22 +0000</pubDate>
</item>
<item>
<title>Answered: Wondered if tools.deps might be missing a plexus-utils  dependency given the Xpp3Dom import.</title>
<link>https://ask.clojure.org/index.php/12578/wondered-tools-might-missing-plexus-dependency-xpp3dom-import?show=12579#a12579</link>
<description>&lt;p&gt;It has it via all the transitive maven deps. Is there an issue you're running into or anything?&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12578/wondered-tools-might-missing-plexus-dependency-xpp3dom-import?show=12579#a12579</guid>
<pubDate>Sun, 22 Jan 2023 20:59:20 +0000</pubDate>
</item>
<item>
<title>Answered: Should :deps/prep-lib honor :exec-args in the build alias?</title>
<link>https://ask.clojure.org/index.php/12298/should-deps-prep-lib-honor-exec-args-in-the-build-alias?show=12300#a12300</link>
<description>&lt;p&gt;&lt;code&gt;:deps/prep-lib&lt;/code&gt; does not use &lt;code&gt;:exec-fn&lt;/code&gt; or &lt;code&gt;:exec-args&lt;/code&gt; by design.&lt;/p&gt;
&lt;p&gt;What is your use case for needing the arg map?&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12298/should-deps-prep-lib-honor-exec-args-in-the-build-alias?show=12300#a12300</guid>
<pubDate>Tue, 11 Oct 2022 19:33:17 +0000</pubDate>
</item>
<item>
<title>Answered: clj -X:deps tree ignores -Sdeps</title>
<link>https://ask.clojure.org/index.php/10245/clj-x-deps-tree-ignores-sdeps?show=12094#a12094</link>
<description>&lt;p&gt;Since version &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/tools.deps.alpha/blob/master/CHANGELOG.md&quot;&gt;0.12.1148&lt;/a&gt; &lt;code&gt;-X:deps tree&lt;/code&gt; takes basis settings:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ clj -X:deps tree :extra '{:deps {ring/ring-core {:mvn/version &quot;1.9.1&quot;}}}'
org.clojure/clojure 1.11.1
  . org.clojure/spec.alpha 0.3.218
  . org.clojure/core.specs.alpha 0.2.62
ring/ring-core 1.9.1
  . ring/ring-codec 1.1.3
    . commons-codec/commons-codec 1.15
  . commons-io/commons-io 2.6
  . commons-fileupload/commons-fileupload 1.4
    X commons-io/commons-io 2.2 :older-version
  . crypto-random/crypto-random 1.2.0
    X commons-codec/commons-codec 1.6 :older-version
  . crypto-equality/crypto-equality 1.0.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can also pass e.g. list of aliases, which is quite useful:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ clj -X:deps tree :aliases '[:dev :test]'
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10245/clj-x-deps-tree-ignores-sdeps?show=12094#a12094</guid>
<pubDate>Mon, 01 Aug 2022 10:47:40 +0000</pubDate>
</item>
<item>
<title>Answered: tools.deps integration with Sourcehut</title>
<link>https://ask.clojure.org/index.php/12005/tools-deps-integration-with-sourcehut?show=12006#a12006</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-228&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-228&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12005/tools-deps-integration-with-sourcehut?show=12006#a12006</guid>
<pubDate>Wed, 22 Jun 2022 15:26:48 +0000</pubDate>
</item>
<item>
<title>Answered: tools.deps not working when downloading a big jar on a small machine</title>
<link>https://ask.clojure.org/index.php/11840/tools-deps-not-working-when-downloading-big-jar-small-machine?show=11843#a11843</link>
<description>&lt;p&gt;Thanks, logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-226&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-226&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11840/tools-deps-not-working-when-downloading-big-jar-small-machine?show=11843#a11843</guid>
<pubDate>Fri, 29 Apr 2022 13:46:50 +0000</pubDate>
</item>
<item>
<title>Answered: Possible concurrency issue with git deps</title>
<link>https://ask.clojure.org/index.php/11663/possible-concurrency-issue-with-git-deps?show=11668#a11668</link>
<description>&lt;p&gt;I'd like to see if it happens with the changes in 1.10.3.1058 as that could certainly affect this (changing to latest is fine, that's just the last change that I think matters here).&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11663/possible-concurrency-issue-with-git-deps?show=11668#a11668</guid>
<pubDate>Thu, 24 Mar 2022 13:49:00 +0000</pubDate>
</item>
<item>
<title>Answered: 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?show=11601#a11601</link>
<description>&lt;p&gt;Thanks, will be fixed for next release. The sha error was already fixed recently.&lt;/p&gt;
&lt;p&gt;For missing url:&lt;/p&gt;
&lt;p&gt;Error building classpath. :git/url not found or inferred for org.clojure/data.csv&lt;/p&gt;
&lt;p&gt;For unknown sha:&lt;/p&gt;
&lt;p&gt;Error building classpath. Commit not found for io.github.clojure/data.csv in repo &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/data.csv.git&quot;&gt;https://github.com/clojure/data.csv.git&lt;/a&gt; at 1234567890123456789012345678901234567890&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?show=11601#a11601</guid>
<pubDate>Fri, 25 Feb 2022 14:32:03 +0000</pubDate>
</item>
<item>
<title>Answered: t.d.a does not support mvn versions starting with letters.</title>
<link>https://ask.clojure.org/index.php/11588/t-d-a-does-not-support-mvn-versions-starting-with-letters?show=11589#a11589</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-219&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-219&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11588/t-d-a-does-not-support-mvn-versions-starting-with-letters?show=11589#a11589</guid>
<pubDate>Thu, 17 Feb 2022 23:03:48 +0000</pubDate>
</item>
<item>
<title>Answered: Support preparing :deps/:extra-deps in aliases</title>
<link>https://ask.clojure.org/index.php/10915/support-preparing-deps-extra-deps-in-aliases?show=11574#a11574</link>
<description>&lt;p&gt;Added support for basis modifiers, including :aliases, in Clojure CLI prerelease 1.10.3.1082.&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?show=11574#a11574</guid>
<pubDate>Sat, 12 Feb 2022 03:18:48 +0000</pubDate>
</item>
<item>
<title>Answered: -X:deps might fail when user.clj requires something</title>
<link>https://ask.clojure.org/index.php/11522/x-deps-might-fail-when-user-clj-requires-something?show=11524#a11524</link>
<description>&lt;p&gt;Currently, the :deps alias does not do &lt;code&gt;:replace-paths []&lt;/code&gt;, but it should and I've filed &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-216&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-216&lt;/a&gt; to fix that.&lt;/p&gt;
&lt;p&gt;As a workaround, you can use -T:deps instead (this does &lt;code&gt;:replace-paths [&quot;.&quot;]&lt;/code&gt; so it's not exactly what you need, but will serve the purpose of removing the src dir from the classpath at least. Alternately, you could redefine the :deps alias.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11522/x-deps-might-fail-when-user-clj-requires-something?show=11524#a11524</guid>
<pubDate>Mon, 31 Jan 2022 14:22:13 +0000</pubDate>
</item>
<item>
<title>Answered: :exclusions is underdocumented</title>
<link>https://ask.clojure.org/index.php/11451/exclusions-is-underdocumented?show=11455#a11455</link>
<description>&lt;p&gt;Added in &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/clojure-site/commit/beb2fc4204f4cb21a63290d86e38ddb00c48a2b3&quot;&gt;https://github.com/clojure/clojure-site/commit/beb2fc4204f4cb21a63290d86e38ddb00c48a2b3&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11451/exclusions-is-underdocumented?show=11455#a11455</guid>
<pubDate>Tue, 11 Jan 2022 14:12:56 +0000</pubDate>
</item>
<item>
<title>Answered: Make :exclusions a common coordinate option?</title>
<link>https://ask.clojure.org/index.php/11452/make-exclusions-a-common-coordinate-option?show=11453#a11453</link>
<description>&lt;p&gt;It is supported on all coordinate types, just not well documented.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11452/make-exclusions-a-common-coordinate-option?show=11453#a11453</guid>
<pubDate>Tue, 11 Jan 2022 13:47:10 +0000</pubDate>
</item>
<item>
<title>Answered: Resolve git deps via artifactory</title>
<link>https://ask.clojure.org/index.php/11063/resolve-git-deps-via-artifactory?show=11331#a11331</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-214&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-214&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11063/resolve-git-deps-via-artifactory?show=11331#a11331</guid>
<pubDate>Mon, 29 Nov 2021 17:57:12 +0000</pubDate>
</item>
<item>
<title>Answered: 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?show=11330#a11330</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-213&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-213&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?show=11330#a11330</guid>
<pubDate>Mon, 29 Nov 2021 17:53:56 +0000</pubDate>
</item>
<item>
<title>Answered: 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?show=11252#a11252</link>
<description>&lt;p&gt;For this, you will just use a &lt;code&gt;:git/url&lt;/code&gt; with &lt;code&gt;file:&lt;/code&gt; protocol or no protocol. Admittedly, that does not currently work, but that is covered in &lt;a rel=&quot;nofollow&quot; href=&quot;https://ask.clojure.org/index.php/11251/allow-absolute-paths-for-file-based-git-urls&quot;&gt;https://ask.clojure.org/index.php/11251/allow-absolute-paths-for-file-based-git-urls&lt;/a&gt;.&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?show=11252#a11252</guid>
<pubDate>Fri, 05 Nov 2021 20:01:05 +0000</pubDate>
</item>
<item>
<title>Answered: :deps in dependency not (always) working when there is no :path specified in dependency</title>
<link>https://ask.clojure.org/index.php/11193/deps-dependency-always-working-there-specified-dependency?show=11194#a11194</link>
<description>&lt;p&gt;One thing that trips people up sometimes is that the Clojure CLI does not automatically pick up changes in local deps - you need to use &lt;code&gt;clj -Sforce&lt;/code&gt; to force the local dep classpath to be refreshed. So if any of the above involved changing the deps.edn of your local deps, that's a necessary step. I would appreciate having the repro if you're using -Sforce and still seeing  the issue.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11193/deps-dependency-always-working-there-specified-dependency?show=11194#a11194</guid>
<pubDate>Tue, 26 Oct 2021 12:35:47 +0000</pubDate>
</item>
<item>
<title>Answered: deps.edn specs from tools.deps.alpha are out of date</title>
<link>https://ask.clojure.org/index.php/11174/deps-edn-specs-from-tools-deps-alpha-are-out-of-date?show=11179#a11179</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-210&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-210&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11174/deps-edn-specs-from-tools-deps-alpha-are-out-of-date?show=11179#a11179</guid>
<pubDate>Mon, 18 Oct 2021 17:38:37 +0000</pubDate>
</item>
<item>
<title>Answered: Install clojure CLI via SDKMAN!</title>
<link>https://ask.clojure.org/index.php/7863/install-clojure-cli-via-sdkman?show=11023#a11023</link>
<description>&lt;p&gt;It seems there are two steps to achieving this&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;make archives available that meet sdkman's requirements&lt;/li&gt;
&lt;li&gt;submit a PR to &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/sdkman/sdkman-db-migrations&quot;&gt;https://github.com/sdkman/sdkman-db-migrations&lt;/a&gt; (example PR: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/sdkman/sdkman-db-migrations/pull/521/files&quot;&gt;https://github.com/sdkman/sdkman-db-migrations/pull/521/files&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The archive should contain a single top-level directory like &lt;code&gt;clojure-1.10.3.967&lt;/code&gt;, and inside there a &lt;code&gt;bin&lt;/code&gt; directory with the executables.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/7863/install-clojure-cli-via-sdkman?show=11023#a11023</guid>
<pubDate>Wed, 08 Sep 2021 06:20:16 +0000</pubDate>
</item>
<item>
<title>Answered: s3 repo + certain deps appear to cause infinite resolution loop</title>
<link>https://ask.clojure.org/index.php/10855/s3-repo-certain-deps-appear-cause-infinite-resolution-loop?show=10865#a10865</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-199&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-199&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I was able to reproduce this. There's some parallelism happening that can make the errors confusing, so using &lt;code&gt;-Sthreads 1&lt;/code&gt; helped a little there. I'm a little suspicious that this has more to do with sockets, and not with actual files. But, it needs more investigation.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10855/s3-repo-certain-deps-appear-cause-infinite-resolution-loop?show=10865#a10865</guid>
<pubDate>Wed, 28 Jul 2021 21:48:52 +0000</pubDate>
</item>
<item>
<title>Answered: Can :paths be symlinks that point outside the project?</title>
<link>https://ask.clojure.org/index.php/10806/can-paths-be-symlinks-that-point-outside-the-project?show=10838#a10838</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-194&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-194&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10806/can-paths-be-symlinks-that-point-outside-the-project?show=10838#a10838</guid>
<pubDate>Mon, 19 Jul 2021 14:18:45 +0000</pubDate>
</item>
<item>
<title>Answered: 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?show=10822#a10822</link>
<description>&lt;p&gt;Yep, thx for the report.&lt;/p&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?show=10822#a10822</guid>
<pubDate>Fri, 16 Jul 2021 14:03:44 +0000</pubDate>
</item>
<item>
<title>Unable to parse tools.deps -Sdescribe output as EDN on Windows</title>
<link>https://ask.clojure.org/index.php/10675/unable-to-parse-tools-deps-sdescribe-output-as-edn-on-windows</link>
<description>&lt;p&gt;I installed tools.deps on Windows using Scoop and it works nicely. However, when I do &lt;code&gt;clj -Sdescribe&lt;/code&gt; I get the following output:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ clj -Sdescribe
    {:version &quot;1.10.3.855&quot;
     :config-files [&quot;C:\Users\***\scoop\modules\ClojureTools\deps.edn&quot; &quot;C:\Users\***\.clojure\deps.edn&quot; &quot;deps.edn&quot;]
     :config-user &quot;C:\Users\***\.clojure\deps.edn&quot;
     :config-project &quot;deps.edn&quot;
     :install-dir &quot;C:\Users\***\scoop\modules\ClojureTools&quot;
     :config-dir &quot;C:\Users\***\.clojure&quot;
     :cache-dir &quot;C:\Users\***\.clojure\.cpcache&quot;
     :force False
     :repro False
     :main-aliases &quot;&quot;
     :repl-aliases &quot;&quot;
     :exec-aliases &quot;&quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and when I then try to parse this as EDN (which should be possible) via &lt;code&gt;clojure.edn/read-string&lt;/code&gt; I get the error: &lt;code&gt;Unsupported escape character: \U&lt;/code&gt; which obviously happens because the file path of &lt;code&gt;C:\Users\...&lt;/code&gt; contains that.&lt;/p&gt;
&lt;p&gt;This would probably need to be adjusted by the tools.deps team? I could work around it, but in a general case, I'd have no way of knowing if a &lt;code&gt;\&lt;/code&gt; signifies an escape character or a path separator. The output should probably be adjusted so a &lt;code&gt;\&lt;/code&gt; is escaped to &lt;code&gt;\\&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Context: this fails for detecting tools.deps version as part of the integration into IntelliJ IDE with Cursive.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10675/unable-to-parse-tools-deps-sdescribe-output-as-edn-on-windows</guid>
<pubDate>Tue, 08 Jun 2021 09:20:01 +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>Reflection warning when using tools.deps programatically</title>
<link>https://ask.clojure.org/index.php/10671/reflection-warning-when-using-tools-deps-programatically</link>
<description>&lt;p&gt;The following warning is a minor nuisance:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;jar:file:/Users/vemv/.m2/repository/org/clojure/tools.deps.alpha/0.11.922/tools.deps.alpha-0.11.922.jar!/clojure/tools/deps/alpha/extensions/deps.clj:39:13: Reflection warning -  reference to field getCanonicalPath can't be resolved.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;could it be fixed?&lt;/p&gt;
&lt;p&gt;Thanks - V&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10671/reflection-warning-when-using-tools-deps-programatically</guid>
<pubDate>Sun, 06 Jun 2021 02:33:51 +0000</pubDate>
</item>
<item>
<title>Does tools.deps.alpha need a maven-core bump?</title>
<link>https://ask.clojure.org/index.php/10643/does-tools-deps-alpha-need-a-maven-core-bump</link>
<description>&lt;p&gt;&lt;code&gt;tools.deps.alpha 0.11.918&lt;/code&gt; uses &lt;code&gt;maven-core 3.6.3&lt;/code&gt;, which seems to be affected by &lt;a rel=&quot;nofollow&quot; href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2021-26291&quot;&gt;CVE-2021-26291&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Does this present a risk for users of  &lt;code&gt;tools.deps.alpha&lt;/code&gt; or the Clojure command-line tools? Would it make sense to bump the referenced version?&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10643/does-tools-deps-alpha-need-a-maven-core-bump</guid>
<pubDate>Thu, 20 May 2021 11:55:53 +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>Could the CLI add an option that is a variant of -Sdeps to avoid having to specify an alias?</title>
<link>https://ask.clojure.org/index.php/9857/could-option-that-variant-sdeps-avoid-having-specify-alias</link>
<description>&lt;p&gt;Currently, there are several parts of &lt;code&gt;deps.edn&lt;/code&gt; that only work under an alias. That means that if you want to do that via the command-line, you have to do:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clojure -Sdeps '{:aliases {:foo {...}}}' -(AMX):foo ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(for example, &lt;code&gt;:replace-deps&lt;/code&gt; for tooling)&lt;/p&gt;
&lt;p&gt;It would be nice if you could just say:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clojure -Salias '{...}' -(AMX) ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;so you don't have to invent an alias, type that name twice, and wrap it in &lt;code&gt;{:aliases ...}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-173&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-173&lt;/a&gt;&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9857/could-option-that-variant-sdeps-avoid-having-specify-alias</guid>
<pubDate>Tue, 24 Nov 2020 19:21:52 +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 can tooling based on deps.edn/t.d.a construct a basis that is specified by aliases, without boilerplate code?</title>
<link>https://ask.clojure.org/index.php/9848/tooling-construct-specified-aliases-without-boilerplate</link>
<description>&lt;p&gt;Discussion copied from Slack:&lt;/p&gt;
&lt;p&gt;It is fairly common for tooling to be want to read the &lt;code&gt;deps.edn&lt;/code&gt; environment as if it were under a set of aliases, i.e., for a tool to want to see the world as if a specific set of aliases were provided, that are different to the aliases needed to run the tool. &lt;/p&gt;
&lt;p&gt;This touches on how &lt;code&gt;-X.. mvn-pom&lt;/code&gt; works, as well as other tools on &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/tools.deps.alpha/wiki/Tools&quot;&gt;https://github.com/clojure/tools.deps.alpha/wiki/Tools&lt;/a&gt; such as &lt;code&gt;depot&lt;/code&gt;: the environment needed to run the tool is not the same as the environment the tool wants for analysis.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;depstar&lt;/code&gt; &quot;works around&quot; this problem by relying on its own runtime environment being the same as what goes into the JAR file but just excluding itself. This is only tenable because it is a very small tool that has zero external dependencies. You can override this and tell &lt;code&gt;depstar&lt;/code&gt; to use a different classpath, but that approach doesn't work for tools that actually want to look at the versions of dependencies, such as &lt;code&gt;mvn-pom&lt;/code&gt;, &lt;code&gt;depot&lt;/code&gt;, etc.&lt;/p&gt;
&lt;p&gt;Alex Miller said: &quot;the datomic ion dev tools is another example&quot;&lt;/p&gt;
&lt;p&gt;Michiel Borkent said: &quot;I also have a couple of tools that just receive a &lt;code&gt;--classpath&lt;/code&gt; arg. But it depends on the tool. For &lt;code&gt;mvn-pom&lt;/code&gt; that might not be so convenient, and getting a list of aliases to resolve versions with might be better.&quot;&lt;/p&gt;
&lt;p&gt;Clarification of the &quot;ask&quot; here, and an addition courtesy of Alex: this process must take into account the various &lt;code&gt;deps.edn&lt;/code&gt; files that the CLI already uses -- system, user, project, command-line -- and must respect the equivalent of &lt;code&gt;-Srepro&lt;/code&gt; so that the user &lt;code&gt;deps.edn&lt;/code&gt; can be elided if desired. In addition, if t.d.a is enhanced to support multiple &quot;project&quot; &lt;code&gt;deps.edn&lt;/code&gt; files, per &lt;a rel=&quot;nofollow&quot; href=&quot;https://ask.clojure.org/index.php/9849/teams-common-dependencies-tooling-across-multiple-projects&quot;&gt;https://ask.clojure.org/index.php/9849/teams-common-dependencies-tooling-across-multiple-projects&lt;/a&gt;, then this process should also support that.&lt;/p&gt;
&lt;p&gt;What tools need is something in t.d.a that they can call with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A list of aliases&lt;/li&gt;
&lt;li&gt;An option equivalent to &lt;code&gt;-Srepro&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The implicit list of &lt;code&gt;deps.edn&lt;/code&gt; files that match how the CLI would read them (this is intended to be weasel-wording to allow for the &quot;extra &lt;code&gt;deps.edn&lt;/code&gt; file&quot; posited in that other &quot;ask&quot; to be specified here somehow&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The idea here is that tooling wants to mimic how the Clojure CLI processes &lt;code&gt;deps.edn&lt;/code&gt; files and aliases and certain other options but the current API exposed by t.d.a is too low-level to make this easy and we don't want every tool based on t.d.a to have to duplicate all that multi-file merging and alias selection.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9848/tooling-construct-specified-aliases-without-boilerplate</guid>
<pubDate>Mon, 23 Nov 2020 20:19:27 +0000</pubDate>
</item>
</channel>
</rss>