Skip to content

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:

source <(curl -sL clojurestar.github.io/grenadine/install)

Or install it with Homebrew on Linux or macOS:

brew install clojurestar/grenadine/grenadine

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:

grenadine --repository=my-m2 --add \
  https://github.com/seancorfield/honeysql/blob/develop/deps.edn

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.