Getting Started with Clojure

6/27/2021

The easiest way to get started with Clojure is through Leiningen.

I'll start creating a new Leiningen project running lein new app clojure-101 in my terminal. It will bootstrap a simple Clojure app.

Now change the directory and enter in the clojure-101 app folder then run lein run. It should display the default message "Hello, World".

I will update the file project.clj and include the Leiningen autorun plugin by including this line :plugins [[lein-auto "0.1.3"]]. The file will become the following:

./project.clj
(defproject clojure-101 "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0"
            :url "https://www.eclipse.org/legal/epl-2.0/"}
  :dependencies [[org.clojure/clojure "1.10.1"]]
  :main ^:skip-aot clojure-101.core
  :target-path "target/%s"
  :plugins [[lein-auto "0.1.3"]]
  :profiles {:uberjar {:aot :all
                       :jvm-opts ["-Dclojure.compiler.direct-linking=true"]}})

Look in the line 9.

Now I'll run lein auto run in my terminal and this is the output:

> lein auto run

auto> Files changed: src\clojure_101\core.clj, test\clojure_101\core_test.clj
auto> Running: lein run
Hello, World!
auto> Completed.

Yay! My project is running automatically when I change any file.

This behavior is very useful to learn a new language. I need fast feedback and I don't understand the whole Clojure ecosystem to run REPL and plug that in my editor. I like to follow the easiest path that I already know.

I know how to develop using JavaScript and auto-reload server. I just want the same behavior while getting started with Clojure.

It is so easy that right now I can change the core.clj file and just print another message:

./src/clojure-101/core.clj
(ns clojure-101.core
  (:gen-class))

(defn -main
  "I don't do a whole lot ... yet."
  [& args]
  (println "Hello darkness, my old friend"))

Looking at the terminal, I see the new message "Hello darkness, my old friend".

Read next


👈 All blog posts📝 Edit this page

🤙

Have a incredible day