An abstraction over the Maven Artifact Resolver.
An abstraction over the Maven Artifact Resolver.
(dependency dep-spec)(dependency [_group-artifact _version &
{:keys [scope optional exclusions] :as _opts :or {optional false}}
:as dep-spec]
default-scope)⚙️ This is considered a lower level function, and used by other aether fns. Use it if you need to, but there's a good chance you won't need to.
Returns an org.eclipse.aether.graph.Dependency instance converted from a lein-style dependency vector.
⚙️ This is considered a lower level function, and used by other aether fns. Use it if you need to, but there's a good chance you won't need to. Returns an `org.eclipse.aether.graph.Dependency` instance converted from a lein-style dependency vector.
(dependency-files graph)Returns a seq of java.io.Filess from dependency metadata in graph (as returned from resolve-dependencies)
Returns a seq of `java.io.Files`s from dependency metadata in `graph` (as returned from [[resolve-dependencies]])
(dependency-hierarchy root-coordinates dep-graph)Returns a dependency hierarchy based on dep-graph
(as returned by resolve-dependencies) and root-coordinates.
root-coordinates should be the root(s) of the hierarchy.
Siblings are sorted alphabetically.
Returns a dependency hierarchy based on `dep-graph` (as returned by [[resolve-dependencies]]) and `root-coordinates`. `root-coordinates` should be the root(s) of the hierarchy. Siblings are sorted alphabetically.
(deploy & {:keys [coordinates artifact-map jar-file pom-file] :as opts})Deploy :jar-file and :pom-file to :coordinates in maven :repository.
For more control use :artifact-map in place of, or in addition to, :jar-file and :pom-file.
kwarg options:
:coordinates - lein-style '[group/name "version"]:artifact-map - (optional) describes artifacts to be deployed, see also :jar-file and :pom-file.
Map key is a partial artifact vector and value is associated java.io.File file.
Coordinates automatically populated from :coordinates and should not be respecified.
Examples of partial artifact vectors keys:
[] - for a jar[:extension "pom"] - for a pom:jar-file - a java.io.File pointing to the jar:pom-file - a java.io.File pointing to the pom:repository - single entry map of name to either
url stringsettings map of
:url - string URL of the repository:snapshots (optional, default true) - use snapshots versions?:releases (optional, default true) - use release versions?:username (as required by repository) - login username for repository:password (as required by repository) - login password for repository:passphrase (as required by repository) - login passphrase for repository:private-key-file - (as required by repository) login private key file for repository:update - (optional) :daily (default) | :always | :never:checksum - (optional) :fail (default) | :ignore | :warn:local-repo - (optional, default ~/.m2/repository) - java.io.File path to the local repository:transfer-listener - (optional, default no listener), can be:
:stdout, writes notifications and progress indicators to stdout, suitable for an
interactive console program:type - :initiated, :started, :progressed, :corrupted, :succeeded, or :failed:method - :get or :put:transferred - number of bytes transferred:error - the Exception that occured, if any, during the transfer:data-buffer - the java.nio.ByteBuffer holding the transferred bytes since the last event:data-length - the number of bytes transferred since the last event:resource - a map of:
:repository - string URL of the repository:name - string path of the resource relative to the repository's base url:file - the local File being uploaded or downloaded:size - the size of the resource:transfer-start-time - long epoch:trace - org.eclipse.aether.RequestTrace instanceorg.eclipse.aether.transfer.TransferListener:proxy - (optional, default no proxy) the :host scheme and :type must match
:host - proxy hostname:type - (optional, default "http") | "https":port - proxy port:non-proxy-hosts - (optional) The list of hosts to exclude from proxying:username - (optional) login username:password - (optional) login password:passphrase - (optional) login passphrase:private-key-file - (optional) login private key file:repository-session-fn - (optional, defaults to repository-session)Deploy `:jar-file` and `:pom-file` to `:coordinates` in maven `:repository`.
For more control use `:artifact-map` in place of, or in addition to, `:jar-file` and `:pom-file`.
kwarg options:
- `:coordinates` - lein-style `'[group/name "version"]`
- `:artifact-map` - (optional) describes artifacts to be deployed, see also `:jar-file` and `:pom-file`.
Map key is a partial artifact vector and value is associated `java.io.File` file.
Coordinates automatically populated from `:coordinates` and should not be respecified.
Examples of partial artifact vectors keys:
- `[]` - for a jar
- `[:extension "pom"]` - for a pom
- `:jar-file` - a `java.io.File` pointing to the jar
- `:pom-file` - a `java.io.File` pointing to the pom
- `:repository` - single entry map of `name` to either
- `url` string
- `settings` map of
- `:url` - string URL of the repository
- `:snapshots` (optional, default `true`) - use snapshots versions?
- `:releases` (optional, default `true`) - use release versions?
- `:username` (as required by repository) - login username for repository
- `:password` (as required by repository) - login password for repository
- `:passphrase` (as required by repository) - login passphrase for repository
- `:private-key-file` - (as required by repository) login private key file for repository
- `:update` - (optional) `:daily` (default) | `:always` | `:never`
- `:checksum` - (optional) `:fail` (default) | `:ignore` | `:warn`
- `:local-repo` - (optional, default `~/.m2/repository`) - `java.io.File` path to the local repository
- `:transfer-listener` - (optional, default no listener), can be:
- `:stdout`, writes notifications and progress indicators to stdout, suitable for an
interactive console program
- a function of one argument, which will be called with a map derived from
each event:
- `:type` - `:initiated`, `:started`, `:progressed`, `:corrupted`, `:succeeded`, or `:failed`
- `:method` - `:get` or `:put`
- `:transferred` - number of bytes transferred
- `:error` - the `Exception` that occured, if any, during the transfer
- `:data-buffer` - the `java.nio.ByteBuffer` holding the transferred bytes since the last event
- `:data-length` - the number of bytes transferred since the last event
- `:resource` - a map of:
- `:repository` - string URL of the repository
- `:name` - string path of the resource relative to the repository's base url
- `:file` - the local `File` being uploaded or downloaded
- `:size` - the size of the resource
- `:transfer-start-time` - long epoch
- `:trace` - `org.eclipse.aether.RequestTrace` instance
- an instance of `org.eclipse.aether.transfer.TransferListener`
- `:proxy` - (optional, default no proxy) the `:host` scheme and `:type` must match
- `:host` - proxy hostname
- `:type` - (optional, default `"http"`) | `"https"`
- `:port` - proxy port
- `:non-proxy-hosts` - (optional) The list of hosts to exclude from proxying
- `:username` - (optional) login username
- `:password` - (optional) login password
- `:passphrase` - (optional) login passphrase
- `:private-key-file` - (optional) login private key file
- `:repository-session-fn` - (optional, defaults to [[repository-session]])(deploy-artifacts &
{:keys [files repository local-repo transfer-listener proxy
repository-session-fn]})⚙️ This is considered a lower level function, and used by other aether fns.
Use it if you need to, but there's a good chance you won't need to.
Consider instead: deploy.
Deploy artifact :files to :repository.
kwarg options:
:files - describes files to be deployed.
Map key is artifact vector coordinate and value is associated java.io.File file.
All artifacts should have the same version, group and artifact IDs.
Examples of artifact vectors keys:
'[group/artifact "1.0.0"] or'[group/artifact "1.0.0" :extension "pom"]:repository - same as deploy:local-repo - (optional, default ~/.m2/repository) - java.io.File path to the local repository:transfer-listener - same as deploy:proxy - same as deploy:repository-session-fn - (optional, defaults to repository-session)⚙️ This is considered a lower level function, and used by other aether fns. Use it if you need to, but there's a good chance you won't need to. Consider instead: [[deploy]]. Deploy artifact `:files` to `:repository`. kwarg options: - `:files` - describes files to be deployed. Map key is artifact vector coordinate and value is associated `java.io.File` file. All artifacts should have the same version, group and artifact IDs. Examples of artifact vectors keys: - `'[group/artifact "1.0.0"]` or - `'[group/artifact "1.0.0" :extension "pom"]` - `:repository` - same as [[deploy]] - `:local-repo` - (optional, default `~/.m2/repository`) - `java.io.File` path to the local repository - `:transfer-listener` - same as [[deploy]] - `:proxy` - same as [[deploy]] - `:repository-session-fn` - (optional, defaults to [[repository-session]])
(install & {:keys [coordinates artifact-map jar-file pom-file] :as opts})Install :jar-file and :pom-file to :coordinates in :local-repo.
For more control use :artifact-map in place of, or in addition to, :jar-file and :pom-file.
kwarg options:
:coordinates - lein-style '[group/name "version"]:artifact-map - same as deploy:jar-file - a java.io.File pointing to the jar:pom-file - a java.io.File pointing to the pom:local-repo - (optional, default ~/.m2/repository) - java.io.File path to the local repository:transfer-listener - same as deployInstall `:jar-file` and `:pom-file` to `:coordinates` in `:local-repo`. For more control use `:artifact-map` in place of, or in addition to, `:jar-file` and `:pom-file`. kwarg options: - `:coordinates` - lein-style `'[group/name "version"]` - `:artifact-map` - same as [[deploy]] - `:jar-file` - a `java.io.File` pointing to the jar - `:pom-file` - a `java.io.File` pointing to the pom - `:local-repo` - (optional, default `~/.m2/repository`) - `java.io.File` path to the local repository - `:transfer-listener` - same as [[deploy]]
(install-artifacts &
{:keys [files local-repo transfer-listener
repository-session-fn]})⚙️ This is considered a lower level function, and used by other aether fns.
Use it if you need to, but there's a good chance you won't need to.
Consider instead: install.
Deploy the :files arg using the coordinates kwarg to the repository kwarg.
kwarg options:
:files - see deploy:local-repo - (optional, default ~/.m2/repository) - java.io.File path to the local repository:transfer-listener - see deploy:repository-session-fn - (optional, defaults to repository-session)⚙️ This is considered a lower level function, and used by other aether fns. Use it if you need to, but there's a good chance you won't need to. Consider instead: [[install]]. Deploy the `:files` arg using the coordinates kwarg to the repository kwarg. kwarg options: - `:files` - see [[deploy]] - `:local-repo` - (optional, default `~/.m2/repository`) - `java.io.File` path to the local repository - `:transfer-listener` - see [[deploy]] - `:repository-session-fn` - (optional, defaults to [[repository-session]])
(make-repository [id settings] proxy)⚙️ This is considered a lower level function, and used by other aether fns. Use it if you need to, but there's a good chance you won't need to.
Returns an org.eclipse.aether.repository.RemoteRepository instance for repository id with settings using proxy
id - name of maven repositorysettings - is either a string representing the URL of the repository or an options map:
:url - string URL of the repository:snapshots (optional, default true) - use snapshots versions?:releases (optional, default true) - use release versions?:username (as required by repository) - login username for repository:password (as required by repository) - login password for repository:passphrase (as required by repository) - login passphrase for repository:private-key-file - (as required by repository) login private key file for repository:update - (optional) :daily (default) | :always | :never:checksum - (optional) :fail (default) | :ignore | :warnproxy - same as :proxy for deploy⚙️ This is considered a lower level function, and used by other aether fns. Use it if you need to, but there's a good chance you won't need to. Returns an `org.eclipse.aether.repository.RemoteRepository` instance for repository `id` with `settings` using `proxy` - `id` - name of maven repository - `settings` - is either a string representing the URL of the repository or an options map: - `:url` - string URL of the repository - `:snapshots` (optional, default `true`) - use snapshots versions? - `:releases` (optional, default `true`) - use release versions? - `:username` (as required by repository) - login username for repository - `:password` (as required by repository) - login password for repository - `:passphrase` (as required by repository) - login passphrase for repository - `:private-key-file` - (as required by repository) login private key file for repository - `:update` - (optional) `:daily` (default) | `:always` | `:never` - `:checksum` - (optional) `:fail` (default) | `:ignore` | `:warn` - `proxy` - same as `:proxy` for [[deploy]]
Although we call this var maven-central, it is used as a map of default maven repositories for resolution.
Although we call this var `maven-central`, it is used as a map of default maven repositories for resolution.
(merge-versions-from-managed-coords coordinates managed-coordinates)⚙️ This is considered a lower level function, and used by other aether fns. Use it if you need to, but there's a good chance you won't need to.
Returns coordinates with any nil or missing versions merged in from
managed-coordinates.
Coordinates are lein-style, e.g. '[[group/name "version" & settings] ..]
⚙️ This is considered a lower level function, and used by other aether fns. Use it if you need to, but there's a good chance you won't need to. Returns `coordinates` with any `nil` or missing versions merged in from `managed-coordinates`. Coordinates are lein-style, e.g. `'[[group/name "version" & settings] ..]`
(register-wagon-factory! scheme factory-fn)⚙️ This is considered a lower level function. It allows you to add communication channels to talk to maven repositories that aren't over the included https channel.
Registers a no-arg factory-fn function for the given scheme. The factory-fn
must return an implementation of org.apache.maven.wagon.Wagon.
⚙️ This is considered a lower level function. It allows you to add communication channels to talk to maven repositories that aren't over the included https channel. Registers a no-arg `factory-fn` function for the given `scheme`. The `factory-fn` must return an implementation of `org.apache.maven.wagon.Wagon`.
(repository-session {:keys [repository-system local-repo offline?
transfer-listener mirror-selector]})⚙️ This is considered a lower level function, and used by other aether fns. Use it if you need to, but there's a good chance you won't need to.
Returns a repository session created from options map.
Typically used when overriding via :repository-session-fn option available
in various aether fns. In this usage, your :repository-session-fn will typically
pass through the options map to repository-session but then will tweak the
returned session to your specific needs.
⚙️ This is considered a lower level function, and used by other aether fns. Use it if you need to, but there's a good chance you won't need to. Returns a repository session created from options map. Typically used when overriding via `:repository-session-fn` option available in various aether fns. In this usage, your `:repository-session-fn` will typically pass through the options map to `repository-session` but then will tweak the returned session to your specific needs.
(resolve-artifacts & args)Resolves artifacts for :coordinates in :repositories.
Same as resolve-artifacts*, but returns a sequence of lein-style dependency vectors; each
adorned with metadata:
:dependency - the Aether dependency object:file - the artifact's java.io.File on disk.kwarg options:
:coordinates - lein-style '[[group/name "version" & settings] ..]
where settings is kwargs of:
:extension - (optional) - the maven extension type to require, for example: "pom":classifier - (optional) - the maven classifier to require, for example: "sources":scope - (optional, default "compile") - the maven scope for the dependency:optional - (optional, default false) - is the dependency optional?:exclusions - (optional) which sub-dependencies to skip : lein-style [group/name & settings]
where settings is kwargs of:
:classifier (optional, default "*"):extension (optional, default "*"):repositories- (optional, default {"central" "https://repo1.maven.org/maven2/"})
map of name to either
url stringsettings map of
:url - string URL of the repository:snapshots (optional, default true) - use snapshots versions?:releases (optional, defalt true) - use release versions?:username (as required by repository) - login username for repository:password (as required by repository) - login password for repository:passphrase (as required by repository) - login passphrase for repository:private-key-file - (as required by repository) login private key file for repository:update - (optional) :daily (default) | :always | :never:checksum - (optional) :fail (default) | :ignore | :warn:retrieve - (optional, default true) - specify false to disable downloading of dependencies:local-repo - (optional, default ~/.m2/repository) - java.io.File path to the local repository:offline? - if true, no remote repositories will be contacted:transfer-listener - same as deploy:proxy - same as deploy:mirrors - map of match to settings where:
match is a string or regex that will be used to match the mirror to
candidate repositories. Attempts will be made to match the
string/regex to repository names and URLs, with exact string
matches preferred. Wildcard mirrors can be specified with
a match-all regex such as #".+". Excluding a repository
from mirroring can be done by mapping a string or regex matching
the repository in question to nil.settings includes the following keys, and all those supported by :repositories :settings.
:name - name/id of the mirror:repo-manager - whether the mirror is a repository manager:repository-session-fn - (optional, defaults to repository-session)Resolves artifacts for `:coordinates` in `:repositories`.
Same as [[resolve-artifacts*]], but returns a sequence of lein-style dependency vectors; each
adorned with metadata:
- `:dependency` - the Aether dependency object
- `:file` - the artifact's `java.io.File` on disk.
kwarg options:
- `:coordinates` - lein-style `'[[group/name "version" & settings] ..]`
where settings is kwargs of:
- `:extension` - (optional) - the maven extension type to require, for example: `"pom"`
- `:classifier` - (optional) - the maven classifier to require, for example: `"sources"`
- `:scope` - (optional, default `"compile"`) - the maven scope for the dependency
- `:optional` - (optional, default `false`) - is the dependency optional?
- `:exclusions` - (optional) which sub-dependencies to skip : lein-style `[group/name & settings]`
where settings is kwargs of:
- `:classifier` (optional, default `"*"`)
- `:extension` (optional, default `"*"`)
- `:repositories`- (optional, default `{"central" "https://repo1.maven.org/maven2/"}`)
map of `name` to either
- `url` string
- `settings` map of
- `:url` - string URL of the repository
- `:snapshots` (optional, default `true`) - use snapshots versions?
- `:releases` (optional, defalt `true`) - use release versions?
- `:username` (as required by repository) - login username for repository
- `:password` (as required by repository) - login password for repository
- `:passphrase` (as required by repository) - login passphrase for repository
- `:private-key-file` - (as required by repository) login private key file for repository
- `:update` - (optional) `:daily` (default) | `:always` | `:never`
- `:checksum` - (optional) `:fail` (default) | `:ignore` | `:warn`
- `:retrieve` - (optional, default `true`) - specify `false` to disable downloading of dependencies
- `:local-repo` - (optional, default `~/.m2/repository`) - `java.io.File` path to the local repository
- `:offline?` - if `true`, no remote repositories will be contacted
- `:transfer-listener` - same as [[deploy]]
- `:proxy` - same as [[deploy]]
- `:mirrors` - map of `match` to `settings` where:
- `match` is a string or regex that will be used to match the mirror to
candidate repositories. Attempts will be made to match the
string/regex to repository names and URLs, with exact string
matches preferred. Wildcard mirrors can be specified with
a match-all regex such as `#".+"`. Excluding a repository
from mirroring can be done by mapping a string or regex matching
the repository in question to nil.
- `settings` includes the following keys, and all those supported by `:repositories` `:settings`.
- `:name` - name/id of the mirror
- `:repo-manager` - whether the mirror is a repository manager
- `:repository-session-fn` - (optional, defaults to [[repository-session]])(resolve-artifacts* &
{:keys [repositories coordinates files retrieve local-repo
transfer-listener offline? proxy mirrors
repository-session-fn]
:or {retrieve true}})⚙️ This is considered a lower level function, and used by other aether fns.
Use it if you need to, but there's a good chance you won't need to.
Consider instead: resolve-artifacts.
Resolves artifacts for :coordinates from :repositories.
Returns an sequence of either :
org.eclipse.aether.ArtifactResult when :retrieve true (the default)org.eclipse.aether.VersionResult when :retrieve falseIf you don't want to mess with the Aether implementation classes, then use
resolve-artifacts instead.
See resolve-artifacts for kwarg options.
⚙️ This is considered a lower level function, and used by other aether fns. Use it if you need to, but there's a good chance you won't need to. Consider instead: [[resolve-artifacts]]. Resolves artifacts for `:coordinates` from `:repositories`. Returns an sequence of either : - `org.eclipse.aether.ArtifactResult` when `:retrieve true` (the default) - `org.eclipse.aether.VersionResult` when `:retrieve false` If you don't want to mess with the Aether implementation classes, then use [[resolve-artifacts]] instead. See [[resolve-artifacts]] for kwarg options.
(resolve-dependencies & args)Returns a graph of dependencies for :coordinates in :repositories.
Same as resolve-dependencies*, but returns a graph of lein-style dependency vectors; each
adorned with metadata:
:dependency - the Aether dependency object:file - the artifact's java.io.File on disk.kwarg options:
:coordinates - same as resolve-artifacts:managed-coordinates - (optional) lein-style [['group/name "version"] ..]
Used to determine version numbers for any entries in :coordinates that
don't explicitly specify them.:repositories - same as resolve-artifacts:retrieve - (optional, default true) - specify false to disable downloading of dependencies:local-repo - (optional, default ~/.m2/repository) - java.io.File path to the local repository:offline? - if true, no remote repositories will be contacted:transfer-listener - same as deploy:proxy - same as deploy:mirrors - same as resolve-artifacts:repository-session-fn - (optional, defaults to repository-session)Returns a graph of dependencies for `:coordinates` in `:repositories`. Same as [[resolve-dependencies*]], but returns a graph of lein-style dependency vectors; each adorned with metadata: - `:dependency` - the Aether dependency object - `:file` - the artifact's `java.io.File` on disk. kwarg options: - `:coordinates` - same as [[resolve-artifacts]] - `:managed-coordinates` - (optional) lein-style `[['group/name "version"] ..]` Used to determine version numbers for any entries in `:coordinates` that don't explicitly specify them. - `:repositories` - same as [[resolve-artifacts]] - `:retrieve` - (optional, default `true`) - specify `false` to disable downloading of dependencies - `:local-repo` - (optional, default `~/.m2/repository`) - `java.io.File` path to the local repository - `:offline?` - if `true`, no remote repositories will be contacted - `:transfer-listener` - same as [[deploy]] - `:proxy` - same as [[deploy]] - `:mirrors` - same as [[resolve-artifacts]] - `:repository-session-fn` - (optional, defaults to [[repository-session]])
(resolve-dependencies* &
{:keys [repositories coordinates managed-coordinates
files retrieve local-repo transfer-listener
offline? proxy mirrors repository-session-fn]
:or {retrieve true}})⚙️ This is considered a lower level function, and used by other aether fns.
Use it if you need to, but there's a good chance you won't need to.
Consider instead: resolve-dependencies.
Returns a graph of dependencies for :coordinates in :repositories.
Returns an instance of either:
org.eclipse.aether.resolution.DependencyResult if :retrieve true (the default)org.eclipse.aether.collection.CollectResult if :retrieve falseIf you don't want to mess with the Aether implementation classes, then use
resolve-dependencies instead.
See resolve-dependencies for kwarg options.
⚙️ This is considered a lower level function, and used by other aether fns. Use it if you need to, but there's a good chance you won't need to. Consider instead: [[resolve-dependencies]]. Returns a graph of dependencies for `:coordinates` in `:repositories`. Returns an instance of either: - `org.eclipse.aether.resolution.DependencyResult` if `:retrieve true` (the default) - `org.eclipse.aether.collection.CollectResult` if `:retrieve false` If you don't want to mess with the Aether implementation classes, then use [[resolve-dependencies]] instead. See [[resolve-dependencies]] for kwarg options.
(within? [_dep version & opts :as coord] [_sdep sversion & sopts :as scoord])⚙️ This is considered a lower level function, and used by other aether fns. Use it if you need to, but there's a good chance you won't need to.
Returns true if the first coordinate coord is a version within the second
coordinate scoord. Only the second coordinate is allowed to contain a
version range.
⚙️ This is considered a lower level function, and used by other aether fns. Use it if you need to, but there's a good chance you won't need to. Returns `true` if the first coordinate `coord` is a version within the second coordinate `scoord`. Only the second coordinate is allowed to contain a version range.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |