The Clojure command line tools can be used to start a Clojure repl, use Clojure and Java libraries, and start Clojure programs.
For more information see the following docs:
Getting Started guide installation instructions
Recent official releases are described here. Prereleases and older versions can be found in the repo changelog.
TDEPS-153 - yet more fixes for errors during concurrent Maven downloads
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