If you come from Java, it is tempting to ask “which one is the official build tool?” In Clojure, the more useful question is: “which toolchain does this project use, and how do I get a REPL and tests running quickly?”
You will see two main workflows:
- tools.deps / Clojure CLI: configuration in
deps.edn, flexible aliases, and strong alignment with the JVM classpath model.
- Leiningen: configuration in
project.clj, a long history in the ecosystem, and a plugin-based workflow many older projects still use.
Practical guidance
- Prefer learning to run what exists before migrating anything.
- For new projects, many teams default to tools.deps, but legacy Lein projects are still common and productive.
- Treat both like Maven vs Gradle: you do not need a holy war, you need fluency.
This section helps you recognize the files, commands, and mental models so you can join a codebase and be effective.
In this section
-
Understanding Leiningen
Learn what Leiningen still does well, how project.clj works, and when Java developers should lean on it.
-
Creating a Project with Leiningen
Generate a real Leiningen app, understand the file layout, and learn the first commands that matter.
-
Mastering tools.deps and the Clojure CLI for Efficient Dependency Management
Explore the intricacies of tools.deps and the Clojure CLI, focusing on dependency management with deps.edn and running code with clj, tailored for Java developers transitioning to Clojure.
-
Creating a Project with tools.deps: A Comprehensive Guide for Java Developers
Learn how to create a Clojure project using tools.deps, understand the structure of a deps.edn file, and run your application with the Clojure CLI. This guide is tailored for Java developers transitioning to Clojure.
-
Comparing Leiningen and tools.deps for Clojure Development
Explore the differences between Leiningen and tools.deps, two essential tools for Clojure development, and determine which is best suited for your needs.