The Clojure command line tools can be used to start a Clojure repl, use Clojure and Java libraries, and start Clojure programs.
Recent official releases are described here. Prereleases and older versions can be found in the repo changelog.
-X:deps aliases
- make resilient for non-map alias data
Update :deps programs in help
Updated tools.deps, tools.deps.cli to latest
Update default Clojure version to 1.11.3
Updated tools.deps, tools.deps.cli to latest
Update default Clojure version to 1.11.2
Clojure -X:deps programs that create a basis now take a :dir option for the directory context to use
Updated tools.deps, tools.deps.cli to latest
CLI releases are now published to GitHub under https://github.com/clojure/brew-install
The download archive is still available but will be treated as a mirror (and configured that way in brew)
With -X or -T accept -
as a trailing argument to read the remainder of args from stdin
On windows installer, hide progress bar on download
TDEPS-247 - Fix StackOverflow on deps with big fan-out
TDEPS-249 - Properly push/pop thread bindings during dep expansion
TDEPS-227 - Shut down dep expansion threads at end of resolve-deps
TDEPS-248 - Make tags
return known tags when offline
Use tools.deps 0.18.1354
Fix regression in -Spom
Updated help to include -X:deps mvn-pom rather than -Spom (which will eventually go away)
Use tools.deps 0.18.1335
TDEPS-245 - Fix error in -X:deps find-versions with an uncanonicalized lib name
Use tools.deps 0.18.1331
Make local deps version comparable based on path
Use tools.deps 0.18.1317
Use tools.deps 0.18.1308
Switch to passing exec args via the basis :argmap
Function execution protocol support for -X/-T
Use tools.deps 0.17.1297
Added env var that can be set to temporarily allow support for http repos: CLOJURE_CLI_ALLOW_HTTP_REPO
Remove deprecated support for -R and -C
Clean up help text around repl supporting init-opts
Use tools.deps 0.16.1285
TDEPS-234 - Always include -XX:-OmitStackTraceInFastThrow by default
Use tools.deps 0.16.1264
Added support in :mvn/repos map to set release and snapshot policies
TDEPS-101 Output repo policies in -Spom and -X:deps mvn-pom
Use tools.deps.alpha 0.15.1254
TDEPS-233 bash script fixes from stale jar check changes
Add some missing items on help and man page
TDEPS-70 - Detect missing jar in classpath and download automatically
TDEPS-232 - Add generic posix installer
TDEPS-200 - Clean up default user deps.edn
TDEPS-219 Fixed -X:deps find-versions
doesn’t find Maven versions that start with a letter
Add :n option to -X:deps find-versions
and default to 8
During -X:deps prep
, use :exec-args of alias being prepped, if present
During -X:deps prep
, also prep current project if needed add :current flag to prep current project, default=false
Fix bad invocation of deps/prep-libs! in clojure.tools.cli.api/prep
Improve error message when local dep directory is missing
For downstream tools, added new well-known location to look up latest stable tools release
Use tools.deps.alpha 0.15.1244
TDEPS-165 Use the env var CLJ_JVM_OPTS to pass JVM properties to the internal classpath building process
Add support to include the common JAVA_OPTS env var as JVM properties in user program execution
TDEPS-228 Add support for auto inferred Sourcehut git urls
Update aws-api, Maven, etc dep versions
Use tools.deps.alpha 0.14.1222
clj -Ttools install-latest
- refine how versions are filtered, sorted, and newest selected
Update to tools.tools v0.2.8
Use tools.deps.alpha 0.14.1212
Add clj -Ttools install-latest
api function, examples:
Install tool: clj -Ttools install-latest :lib io.github.clojure/tools.deps.graph :as graph
Update tool: clj -Ttools install-latest :tool graph
Fix regression with clj -X:deps find-versions
from 1.11.1.1119
Output from clj -X:deps find-versions
now provides :git/tag and :git/sha
Update to tools.tools v0.2.6
Use tools.deps.alpha 0.14.1205
Fix directory context of -X:deps prep
with transitive local deps
Use tools.deps.alpha 0.14.1194
Fix bug in TDEPS-213 change
Use tools.deps.alpha 0.14.1189
TDEPS-213 - Add -X:deps aliases
to list available aliases
TDEPS-226 - More nunanced error handling for s3 downloads
Better error message when git url can’t be inferred
Use tools.deps.alpha 0.14.1185
TDEPS-153 - yet more fixes for errors during concurrent Maven downloads
Use tools.deps.alpha 0.14.1178
Default to Clojure 1.11.0 if no Clojure version specified
TDEPS-153 Fix concurrency issues in Maven artifact downloads
Fix error message when git url missing or not inferred
Pass :exec-fn and :exec-args to -X/-T even when using -Scp
TDEPS-222 Make Clojure dependency in pom a compile dependency, not provided
TDEPS-203 In -X:deps prep
- now takes basis settings, including aliases
TDEPS-197 -X:deps git-resolve-tags
- now resolves to :git/tag and :git/sha
-X:deps tree
- now takes basis settings
-X:deps mvn-pom
- now takes basis settings
-X:deps list
- put license abbreviation list in a resource and load on demand
Use tools.deps.alpha 0.12.1158
TDEPS-216 - Built-in :deps alias should remove project paths from classpath
Improve error if git sha is not found in git repo
Improve prep error if transtive dep’s prep function is unresolvable
Bump AWS deps to latest versions
Use tools.deps.alpha 0.12.1135
Update some Maven transitive deps to address some CVEs
Update to tools.tools v0.2.5
Add check to error on invocation of multiple exec functions
Use tools.deps.alpha 0.12.1120
TDEPS-207 Fix deadlock in version range resolution
TDEPS-215 Fix race condition during parallel loading of s3 transporter
Don’t track local deps.edn manifest for caching if deps project doesn’t have one
Update maven-core to 3.8.4, aws libs, tools.build, tools.tools to latest
Use tools.deps.alpha 0.12.1109
Add clj -X:deps list
for listing the full transitive set of deps and their license info - see docs
Improved error handling for unknown tool with -T
or -X:deps find-versions
Use tools.deps.alpha 0.12.1084
TDEPS-212 Cover a much wider range of valid git dep urls, including git file urls
Use tools.deps.alpha 0.12.1071
TDEPS-83 Invalidate classpath cache when local dep manifests change
Add new clj -X:deps list
program to list the full lib set on the classpath, see API docs for more info
Bump deps to more recent versions - aws-api, jetty-client, etc
Clean up exception handling for -X/-T
Use tools.deps.alpha 0.12.1067
Remove bottle :unneeded
from brew formulas (no longer needed)
TDEPS-209 Include only jar files in classpath from Maven artifacts
Update to tools.tools v0.2.1 (minor improvements in clj -Ttools list
)
Use tools.deps.alpha 0.12.1058
Fix nested session cache computation for local pom model building
Use tools.deps.alpha 0.12.1048
Update to latest AWS API libs
Downgrade Maven resolver libs to better match Maven core libs
Use tools.deps.alpha 0.12.1041
Refine exec exceptions for missing namespace vs missing function in namespace
Replace Maven-based build process with tools.build
Compile entry points in tools.deps used for building classpaths for performance
Use tools.deps.alpha 0.12.1036
TDEPS-199 Use default http-client in S3 transporter
Cache S3 transporter for a repo
Fixed session cache to work properly across threads / binding stacks for better perf
Replace specific maven version range requests with non-range request to reduce repo metadata lookups
Load and cache Maven settings once for perf
Cache version range resolution results for perf
Use tools.deps.alpha 0.12.1019
deps.edn
If a git library name follows the repo convention names, the :git/url
can now be inferred (:git/url
can also be specified explicitly and takes precedence)
:git/tag
and prefix :git/sha
can now be specified instead of the full sha. Both must point to the same commit.
:sha
has been renamed to :git/sha
but the original is still supported for backwards compatibility
:deps/prep-lib
- a new top-level key can be used to say how a source lib should be prepared before being added to the classpath. This key’s value is a map with :alias
, :fn
, and :ensures
. See prep docs for more info.
:tools/usage
- a new top-level key can be used to provide the :ns-default
and :ns-aliases
context for a tool
Tools - git-based programs that can be installed with a local name. Tools can provide their own usage context in deps.edn.
New -T
option is like -X
(executes a function) but does not use the project classpath, instead uses tool classpath (and adds :paths ["."]
by default). -T:aliases
is otherwise same as -X
. -Ttoolname
resolves named tool by name and uses that tool lib.
TDEPS-198 - -X and -T will not wait to exit if futures/agents have been used
TDEPS-182 - Improve deprecation messages to be more accurate
TDEPS-183 - Fix -Sdescribe output to be valid EDN on Windows
TDEPS-179 - Fix incorrect classpath when :classpath-overrides removes path
Delay computation of local-repo path (don’t compute at load time)
Use tools.deps.alpha 0.12.1003
New -X:deps programs:
find-versions
- to find versions of Maven or git libs or tools
help/dir
- to list available functions in a tool namespace
help/doc
- to list docs for a tool namespace or function
Read more at Source Libs and Builds.
Adds support for a trailing map of kvs in -X calls (similar to Clojure 1.11 trailing map to vararg calls)
Updates all Maven deps to latest (maven-resolver 1.7.0, maven core 1.8.3) to address these security concerns
CVE-2020-13956 - bumps deps on Apache HttpClient used by Maven
CVE-2021-26291 - potential security problems regarding Maven repositories:
Due to the possibility of MITM (man in the middle) attacks, http repo access is now blocked by default. tools.deps/Clojure CLI has always used https repos in the default repository list (central and clojars), so this mostly impacts any explicit http repositories defined in deps.edn
Concerns over the "hijacking" of repository urls by transitive pom deps (or their super poms) to download artifacts from malicious repos. Maven made no changes here, but did clarify how repos are resolved on this page. From a deps perspective, we only use repositories declared in the top-level deps.edn (if transitive deps need a custom repo, you will need to add it at top-level too). For tools.deps use of pom dependencies, we are providing the repos of the top deps.edn file (which should always put Maven Central and Clojars first), then deferring to Maven for the rest.
Use tools.deps.alpha 0.11.922
TDEPS-177 - Fix Maven mirrors to look up by id, not name
Remove flag when fetching git deps so that older git versions work
Tweak some warning messages
Clean up scripts to simplify variable replacement
Use tools.deps.alpha 0.11.918
git deps: switch from using jgit to shelling out to git (must be git >= 2.5)
New env vars for control:
GITLIBS_COMMAND
- command to invoke when shelling out to git, default = git
GITLIBS_DEBUG
- set to true
to print git commands and output to stderr, default = false
Made git fetch only when shas can’t be resolved to improve performance
Bump dep versions for tools.cli and aws api to latest
Use tools.deps.alpha 0.11.905
Fix clj -X:deps git-resolve-tags
to update the sha to match the tag
Perf improvements for git or local deps using pom.xml
Use tools.deps.alpha 0.9.884
Add -version and --version options
TDEPS-56 - Fix main-opts and jvm-opts word splitting on spaces
TDEPS-125 - Use JAVA_CMD if set (thanks Gregor Middell!)
Add warning if :paths
or :extra-paths
refers to a directory outside the project root (in the future will become an error)
Use tools.deps.alpha 0.9.871
Improve error when git dep version relationship can’t be determined
Switch to 1.10.2 for default Clojure version
Use tools.deps.alpha 0.9.863
Set exit code for -X ex-info error
Sync up cli syntax for aliases in help
Use tools.deps.alpha 0.9.857
New, more informative tree format for clj -Stree
/ clj -X:deps tree
Added options for use with clj -X:deps tree
Use tools.deps.alpha 0.9.857
Fix use of jdk profile activation in local deps with pom files
Fix error handling for -X to avoid double throw
Add error handling for -A used without an alias
Use tools.deps.alpha 0.9.840
Fix clj -X:deps tree adding tools.deps.alpha to tree
Fix clj -X:deps mvn-pom adding tools.deps.alpha to pom deps
Fix clj -X:deps git-resolve-tags not working
TDEPS-169 - Fix clj -X:deps mvn-install on jar to also install embedded pom
Fix clj -Spom not respecting dep modifications from -A (regression)
Use tools.deps.alpha 0.9.833
Make edn reading tolerant of unknown tagged literals
Update to latest dependencies for maven-resolver and aws-api
Use tools.deps.alpha 0.9.821
Fixes to handling transitive deps when newer versions of a dep are found in the dep expansion
TDEPS-168 - Improvements to -X error message handling
Use tools.deps.alpha 0.9.816
Added execution mode (-X)
Added prepare mode (-P)
Expanded main execution (-M) to support all argmap arguments
Added new argmap attributes for namespace resolution:
:ns-aliases and :ns-default
Added new clojure.tools.cli.api available via -X:deps alias:
clj -X:deps git-resolve-tags
clj -X:deps mvn-install
clj -X:deps mvn-pom
clj -X:deps tree
Deprecated -R, -C (use -X, -M, or -A instead)
Deprecated unqualified lib names in deps.edn (use fully qualified lib names)
Deprecated alias tool args :deps and :paths (use :replace-deps and :replace-paths)
Removed -O (use -X, -M, or -A)
Removed -Sresolve-tags (use -X:deps git-resolve-tags)
TDEPS-152 - Fixes to -Spom generation with srcDirectory
TDEPS-155 - Better error handling for bad coordinates
TDEPS-167 - Handle absolute resource paths in pom deps
Use tools.deps.alpha 0.9.810
Rework exclusion handling when exclusion sets differ for same lib/version
Use tools.deps.alpha 0.8.709
(Windows) Write -Spath to output, not to host
TDEPS-152 - Fix bad addition of srcDirectory in pom gen
TDEPS-155 - Add error checking for missing :mvn/version
Use tools.deps.alpha 0.8.695
TDEPS-150 - Fix regression in supporting -Scp flag (avoid resolving deps)
TDEPS-148 - Fix incorrect path resolution for git/local dep without deps.edn
Use tools.deps.alpha 0.8.677