lein(1) Automate Clojure projects


lein [TASK [ARGS] [, TASK2 [ARGS] ...]]


Leiningen is for automating Clojure projects without setting your hair on fire.

Working on Clojure projects with tools designed for Java can be an exercise in frustration. With Leiningen, you just write Clojure.


lein help will show the complete list of tasks, while lein help TASK shows usage for a specific one.

lein help tutorial has a detailed walk-through of the various tasks, but the most commonly-used are:

lein new NAME
generate a new project skeleton
lein test [TESTS]
run the tests in the TESTS namespaces, or all tests
lein repl
launch an interactive REPL session and socket server
lein jar
package up the whole project as a .jar file
lein install [NAME VERSION]
install a project


Leiningen reads its configuration from the project.clj file in your project root. Either use lein new to create a fresh project from which to work, or see the exhaustive list of configuration options with lein help sample.

You can also have user-level configuration that applies for all projects. The ~/.lein/init.clj file will be loaded every time Leiningen launches; any arbitrary code may go there. This code is executed inside Leiningen itself, not in your project. Set the :repl-init key in project.clj to point to a namespace if you want code executed inside your project.

You can also manage user-level plugins with the plugin task; see lein help plugin


Check https://github.com/technomancy/leiningen/issues to see if your problem is a known issue. If not, please open a new issue on that site or join the mailing list at http://groups.google.com/group/leiningen/. Please include the output of lein version as well as your project.clj file and as much of the relevant code from your project as possible.


Copyright (C) 2009-2011 Phil Hagelberg and contributors.

Distributed under the Eclipse Public License, the same as Clojure uses. See the file /usr/share/doc/leiningen/copyright.


This manpage is written by Phil Hagelberg <[email protected]>