こちらはWindows環境にClojure CLI(Clojure Command Line Interface)をインストールする際の手順のメモになります。
目次
Windows用のインストーラーを取得
まず、Windows用のインストーラーを取得します。PowerShellにて以下を実行します。
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://download.clojure.org/install/win-install-1.11.1.1165.ps1')
実行結果1
Downloading Clojure tools 警告: Clojure will install as a module in your PowerShell module path. Possible install locations: 1) C:\Users\fumo\Documents\WindowsPowerShell\Modules 2) C:\Program Files\WindowsPowerShell\Modules 3) C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules Enter number of preferred install location:
1
実行結果2
Enter number of preferred install location: 1 Installing PowerShell module Removing download Clojure now installed. Use "clj -h" for help.
動作確認(直接実行)
ファイル構成
以下のような構成でディレクトリとファイルを作成していきます。
プロジェクトのルートディレクトリ/ ├──deps.edn └──src/ └──test/ └──script.clj
deps.ednの作成
まず、deps.edn
を作成します。deps.edn
はファイルはプロジェクトの依存関係と設定を管理するための簡易的な構成管理ファイルです。
deps.edn
{:paths ["src"]}
deps.edn
ファイルを置いたディレクトリをプロジェクトのルートディレクトリ
とします。- スクリプトファイルは
:paths
で指定したsrc
ディレクトリに置きます。
スクリプトファイルの作成
ここではフィアル名をscript.clj
としてスクリプトファイルを作成します。
script.clj
(ns test.script) (defn -main [& args] (println "Hello, Clojure!"))
- スクリプト内の
-main
関数がエントリポイントになります。 - スクリプトファイルの格納先は、
src/test
ディレクトリとして下さい。 - 先頭の
ns
の部分はネームスペース宣言です。ここで指定しているネームスペースと作成したスクリプトのディレクトリ構成をあわせておく必要があります。 src
配下のtest/script.clj
は、script.clj
内で宣言したネームスペースに合わせて置いて下さい。- 最後の部分はスクリプト名と合わせる必要があります。(拡張子の
.clj
を除いたもの)
- 最後の部分はスクリプト名と合わせる必要があります。(拡張子の
スクリプトの実行
clj
コマンドを、deps.edn
ファイルが存在するディレクトリ(プロジェクトのルートディレクトリ)で実行します。
コマンドは以下のようになります、
clj -M -m <ネームスペース>
-m
オプションにネームスペース名を指定して実行します。
実行結果
> clj -M -m test.script Hello, Clojure!
動作確認(コマンドエイリアスを使って実行)
ファイル構成
例として、ファイル構成は以下のようにします。
プロジェクトのルートディレクトリ/ ├── deps.edn └── src/ ├── script2.clj └── test/ └── script.clj
deps.ednファイルの編集
deps.edn
にコマンドのエイリアスを指定しておき、そのエイリアスを使ってコマンドを実行することができます。
以下では例としてrun
とrun2
というエイリアスを指定しています。
{:paths ["src"] :aliases {:run {:exec-fn test.script/-main :exec-args {}} :run2 {:exec-fn script2/-main :exec-args {}} }}
- わかりにくいので色を変えてあります。
run
(赤)は、test.script
の-main
関数を実行します。run2
(青)は、script2
の-main
関数を実行します。
スクリプトファイルの作成
こんな感じで作成します。
script.clj
(ns test.script) (defn -main [& args] (println "Hello, Clojure!"))
script2.clj
(ns script2) (defn -main [& args] (println "Hello, Clojure! 2"))
スクリプトの実行
-X
オプションに続けて、エイリアス名を指定して実行します。
clj -X:エイリアス名
実行結果
> clj -X:run Hello, Clojure! > clj -X:run2 Hello, Clojure! 2
このように、エイリアスとしてコマンドを定義しておくと、簡単にコマンドを呼び出すことができます。