A faster pour
for Maven.
Barista is a Maven-compatible build tool for the JVM, written in Rust. The same pom.xml, the same ~/.m2, the same artifacts. A native dependency resolver and a content-addressed cache make resolution fast, and a warm-JVM barback worker pool runs the full Maven build on macOS and Linux.
Coming soonHomebrew tap publishes with v0.1 — build from source today →
Faster, because
we left the JVM.
Resolution moves out of the JVM and into a native resolver with HTTP/2 multiplexing and a content-addressed cache. Execution stays on the JVM — inside a warm barback worker pool that holds Maven 4 core and plugin classloaders across invocations.
Three things we
care about. That’s it.
Speed gets the headlines. Compatibility is the only reason it can ever ship. Resource efficiency is the reason it’s worth shipping at all.
A native resolver, not the JVM.
Dependency resolution runs in Rust with HTTP/2 multiplexed POM fetching and a real, checksum-verified lockfile. A warm barback daemon holds JIT state and plugin classloaders and runs the full Maven lifecycle on macOS and Linux.
Built for compatibility.
Reads your existing pom.xml and settings.xml, shares ~/.m2/repository, and bundles Maven 4. The lifecycle drop-ins aim for byte-identical output, modulo declared timestamp normalization.
Built for the commons.
Maven Central, your corporate Nexus, the mirrors — they’re paid for by someone. Every avoidable request and wasted byte is a bug. Efficiency is a first-class, regression-gated feature.
The whole menu.
Every verb does one thing.
Barista keeps Maven’s lifecycle verbs and adds a handful of its own for resolution and caching. The signature verbs below plus the Maven lifecycle drop-ins build your project on macOS and Linux today.
$ barista pull --update~/.m2.$ barista pour --target ~/.m2$ barista grind tree$ barista shot --help$ barista dial-inDrop-in surface
The Maven lifecycle phases are mirrored verb-for-verb. On macOS and Linux they execute through the barback daemon, building byte-identically to Maven (single-module proven; reactor maturing; needs a JDK). Windows lifecycle execution is landing — use --no-daemon to fork to Maven there.
- clean
- compile
- test
- package
- install
- verify
- deploy
- -P profiles
- -D properties
Agent-native
Every command supports --output json with a stable, versioned schema. Failures carry structured error codes. No human-shaped output to parse.
- --output json
- --output ndjson
- BAR-CACHE-NNN
- --ci
- --frozen
- --explain
Orchestration in Rust.
Execution on the JVM.
A clean split between the parts that need to be fast and cold-startable (resolver, cache, classpath builder) and the parts that need to be compatible with the JVM plugin ecosystem (mojo execution). The CLI is a single static binary.
The four processes.
The CLI is transient: it starts, does the work, exits. The daemon stays running across invocations. The cache server is optional and shared. Upstream repositories don’t even know we’re here.
- 01barista — parse, resolve, lock, materialize. Sub-second on a warm lockfile.
- 02barback — embedded Maven 4 core in a warm worker pool, plugin classloaders cached. Runs the full lifecycle on macOS and Linux.
- 03roastery— speaks Bazel’s REAPI CAS gRPC and a barista-native HTTP/2 protocol. Optional org-wide artifact cache.
- 04upstream — same Central, same Nexus, same Artifactory. Just much less traffic.
Central is a commons.
We treat it like one.
Maven Central serves billions of requests and petabytes of egress every month, paid for by people who are not your problem until they are. Caching is recovery from inefficiency. Barista pursues primary efficiency: don’t ask if you don’t need to ask; don’t transfer what you don’t need to transfer.
Caching is recovery from inefficiency. Pursue primary efficiency: don’t ask if you don’t need to ask; don’t transfer what you don’t need to transfer.Design goal · G9 — resource efficiency
Pull your first
resolve in under a minute.
A single static binary — no JVM dependency for the CLI itself. Your existing project resolves and caches with one command.
Coming soon — Homebrew tap publishes with v0.1. Build from source today →