Grenadine¶
Pomegranate, with the JVM pressed out.
Grenadine is first a pure Clojure library for resolving and installing Maven dependencies. Its resolver core runs unchanged on JVM Clojure, Babashka, Glojure, Jolt, and let-go.
It gives Clojure dialects a shared way to support deps.edn-style Maven
dependencies without reimplementing Maven resolution for every runtime.
One resolver, many dialects¶
The portable grenadine.core library:
- parses and builds effective POMs;
- resolves transitive dependency graphs;
- supports newest, Maven-nearest, and tools.deps mediation;
- downloads artifacts and verifies checksums;
- emits deterministic locks; and
- prepares extracted Clojure source roots for non-JVM runtimes.
The portable API lives in grenadine.core. Small runtime integrations provide
filesystem, HTTP, digest, and load-path operations. Dialect-facing facades add
familiar add-lib, add-libs, add-deps, and sync-deps entry points.
Get started with the library Read the core API reference
Also a standalone CLI¶
Grenadine also ships as a native command compiled with
Gloat. It is useful when you want to install the
dependencies from a local or remote deps.edn by hand, without first running
a Clojure dialect or a JVM.
Install the latest release on Bash or Zsh:
Or install it with Homebrew on Linux or macOS:
Use an installed grenadine binary like this:
grenadine --add deps.edn
grenadine --repository=my-m2 --add deps.edn
grenadine --quiet --add deps.edn
grenadine --list
grenadine --list deps.edn
grenadine --add nrepl/bencode 1.1.0 clj-commons/clj-yaml
grenadine --delete nrepl/bencode 1.1.0
grenadine --remove clj-commons/clj-yaml
grenadine --expand org.yamlscript/ys.v0
grenadine -M newest --expand org.yamlscript/ys.v0
grenadine --mediators
grenadine --help
grenadine --version
HTTP and HTTPS URLs are accepted directly, including GitHub blob links:
The command lists each newly installed dependency immediately, then prints the installed, already-present, and total counts. Quiet mode suppresses non-error output.
Install Grenadine Read the CLI reference
Run without installing¶
On Bash and Zsh, the current release can be downloaded, verified, and run from
a temporary cache without installing it on PATH:
$(source <(curl -sL clojurestar.github.io/grenadine/get)) \
-X https://github.com/yaml/yamlscript/blob/main/core/deps.edn
PowerShell users can run:
& ([scriptblock]::Create((Invoke-RestMethod https://clojurestar.github.io/grenadine/get.ps1))) `
-X https://github.com/yaml/yamlscript/blob/main/core/deps.edn
Platforms¶
Release binaries cover Linux on amd64, arm64, and armv6; macOS and Windows on amd64 and arm64; and FreeBSD, OpenBSD, and NetBSD on amd64 and arm64.
See Installation for the complete platform table and archive instructions.
For source, development instructions, and releases, see the Grenadine repository.