anchor.diff:  
   = Procurers
   
  -Coordinates are interpreted by procurers, which know how to determine dependencies for a library and download artifacts. tools.deps.alpha is designed to support an extensible set of procurers that can expand over time. Currently the available procurers are: `mvn`,  `local`, and `git`.
  -
  -The procurer to use is determined by examining the attributes of the coordinate and using the first attribute qualifier that's found (ignoring the reserved qualifier "deps"). For example, a Maven coordinate contains a `:mvn/version` attribute and a local coordinate contains a `:local/root` attribute.
  -
  -Procurers may also have configuration attributes stored at the root of the configuration map under the same qualifier. 
  +Dependency coordinates are interpreted by procurers, which understand a particular coordinate type and know how to find dependencies and download artifacts for a library. The Clojure CLI currently suports the folllowing procurers: `mvn`,  `local`, and `git`. The underlying tools.deps.alpha library supports procurer extensions when used as a library.
  +
  +The coordinate attributes determine which procurer is used. In general, most procurer attributes are qualified per procurer type (there are some historical exceptions). Procurer-independent attributes use the `deps` qualifier.
  +
  +Some procurers may also look for configuration attributes at the root of the deps.edn configuration map using the the same qualifier.
   
   == Maven
   
  -The `mvn` procurer will look for two keys at the root of the deps.edn:
  +The Maven procurer uses the qualifier `mvn` and is used to retrieve library artifacts from https://maven.apache.org/[Maven repositories], the standard repository manager in the Java ecosystem. Libraries are downloaded as .jar files and stored in the Maven local repository cache (located in ~/.m2/repository by default). Other JVM-based tools may also use this cache.
  +
  +Maven coordinates have the following attributes:
  +
  +* `:mvn/version` (required) - Maven version string
  +
  +Maven libraries are located in Maven repositories using "Maven coordinates", typically the groupId, artifactId, and version (sometimes also abbreivated as GAV). In deps.edn, the library name is parsed as `groupId/artifactId` and the version is taken from `:mvn/version`. 
  +
  +For example, this deps.edn file:
  +
  +[source,clojure]
  +----
  +{:deps {org.clojure/clojure {:mvn/version "1.11.1"}}}
  +----
  +
  +declares a dependency on a Maven artifact with:
  +
  +* groupId = org.clojure
  +* artifactId = clojure
  +* version = 1.11.1
  +
  +Some Maven artifacts also have a "classifier", which is a variant of a particular artifact. In the Maven procurer, classifiers are included at the end of the lib name, separated by a `$` in this format: `groupId/artifactId$classifier`.
  +
  +Currently, only `jar` artifacts are supported. Support for other artifact types (particularly Bill of Materials poms) may be added in the future.
  +
  +The `mvn` procurer will look for two configuration keys at the root of the deps.edn:
   
   * `:mvn/repos` - map of repository name to repository descriptor, a map currently taking only the key `:url`
   * `:mvn/local-repo` - a path (string) to the local repo cache. If none supplied, Maven uses `~/.m2/repository`.
   
  -The installation deps.edn configures these default Maven repos:
  +The root deps.edn configures these default Maven repos:
   
   [source,clojure]
   ----
  
positive.code: 
  == Git
  
  The Clojure CLI supports using source-based libs directly from Git repositories. Git libs are downloaded by default to the `~/.gitlibs` directory. The working tree is checked out and cached for each sha included as a dependency.
  
  === Coord attributes
  
  Git deps are declared with the following info:
  
  * lib name - a qualified symbol
  * coordinate - a map of:
  ** `:git/url` - Git url
  ** `:git/sha` - a full 40-char sha or possibly a sha prefix if tag provided (`:sha` is also accepted for backwards compatibility)
  ** `:git/tag` - git tag name
  
  To download a git lib, two pieces of information must be known - the Git repo url and the sha. These can be provided in several ways. If the lib name follows the conventions below, the Git repo URL will be inferred and does not need to be specified. Otherwise, it can be supplied with `:git/url` in the coordinate.
  
  Lib to url convention:
  
  [cols="<*", options="header", role="table"]
  |===
  
negative.code: 
  === Maven S3 repos
  
  The `mvn` procurer also supports connecting to public and private Maven repositories hosted in https://aws.amazon.com/s3/[AWS S3]. This is particularly useful when accessing private Maven repositories from within an application hosted on AWS.
  
  Add a `:mvn/repos` that includes the s3 repository root:
  
  