An abstraction over the Maven Artifact Resolver.
An abstraction over the Maven Artifact Resolver.
(dependency [_group-artifact _version &
{:keys [scope optional exclusions]
:as _opts
:or {scope "compile" optional false}} :as dep-spec])
⚙️ 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.Files
s 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 deploy
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 [[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
| :warn
proxy
- 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 false
If 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 false
If 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 is a website building & hosting documentation for Clojure/Script libraries
× close