Leiningen で Clojure プロジェクトを作成

Leiningen は Clojure プロジェクトのビルドツール。
なんかいろいろ便利らしい。単体で動作する jar も簡単に生成できる。

Leiningen のインストール

Leiningen (README.md at master from technomancy’s leiningen – GitHub) の Installation の 1. Download the script. から lein (bash script) をダウンロードする。

ダウンロードした lein ファイルをパスの通った場所に配置して実行権限を付加し、以下のコマンドを実行する。
コマンド実行後、~/.m2/ 以下に Leiningen がインストールされる。

$ lein self-install

Leiningen (Leiningen 1.1.0 on Java 1.6.0_17 Java HotSpot(TM) 64-Bit Server VM) で使えるタスクのリスト。

  • pom
  • help
  • upgrade
  • install
  • jar
  • test
  • deps
  • uberjar
  • clean
  • compile
  • version
  • new

lein help taskname でタスクの説明を見ることができる。

$ lein help new
Create a new project skeleton.
lein new [group-id/]artifact-id [project-dir]
Group-id is optional. Project-dir defaults to artifact-id if not given.
Neither group-id nor artifact-id may contain slashes.

Hello, World を作成

サンプルとして、Hello, World プログラムを作ってみる。

プロジェクト(hello)を作成する。

$ lein new hello

hello/src/hello/core.clj にコードを記述する。

(ns hello.core
  (:gen-class))

(defn -main [& args]
  (. javax.swing.JOptionPane (showMessageDialog nil "Hello, World")))

プロジェクト・ファイルに :main hello.core を追加して、src/hello/core.clj の (defn -main [& args] ...) をスタンドアロン jar のエントリポイントに設定する。

(defproject hello "1.0.0-SNAPSHOT"
  :description "FIXME: write"
  :dependencies [[org.clojure/clojure "1.1.0"]
                 [org.clojure/clojure-contrib "1.1.0"]]
  :main hello.core)

uberjar でスタンドアロン jar を生成する。

$ lein uberjar
     [null] Compiling hello.core
Created /path/to/project/hello/hello.jar
Including hello.jar
Including clojure-1.1.0.jar
Including clojure-contrib-1.1.0.jar
$ ls
README                hello-standalone.jar  lib/                  src/
classes/              hello.jar             project.clj           test/
$ chmod +x hello-standalone.jar
$ java -jar hello-standalone.jar

Hello World from Clojure

アイコンのダブルクリックでもOK。

Standalone jar in Leiningen project files

«
»