Creating a new project
Over the course of this book, we're going to use a number of third-party libraries and external dependencies. We will need a tool to download them and track them. We also need a tool to set up the environment and start a REPL (read-eval-print-loop or interactive interpreter) that can access our code or to execute our program. REPLs allow you to program interactively. It's a great environment for exploratory programming, irrespective of whether that means exploring library APIs or exploring data.
We'll use Leiningen for this (http://leiningen.org/). This has become a standard package automation and management system.
Getting ready
Visit the Leiningen site and download the lein
script. This will download the Leiningen JAR file when it's needed. The instructions are clear, and it's a simple process.
How to do it...
To generate a new project, use the lein new
command, passing the name of the project to it:
$ lein new getting-data Generating a project called getting-data based on the default template. To see other templates (app, lein plugin, etc), try lein help new.
There will be a new subdirectory named getting-data
. It will contain files with stubs for the getting-data.core
namespace and for tests.
How it works...
The new project directory also contains a file named project.clj
. This file contains metadata about the project, such as its name, version, license, and more. It also contains a list of the dependencies that our code will use, as shown in the following snippet. The specifications that this file uses allow it to search Maven repositories and directories of Clojure libraries (Clojars, https://clojars.org/) in order to download the project's dependencies. Thus, it integrates well with Java's own packaging system as developed with Maven (http://maven.apache.org/).
(defproject getting-data "0.1.0-SNAPSHOT" :description "FIXME: write description" :url "http://example.com/FIXME" :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"} :dependencies [[org.clojure/clojure "1.6.0"]])
In the Getting ready section of each recipe, we'll see the libraries that we need to list in the :dependencies
section of this file. Then, when you run any lein
command, it will download the dependencies first.