タイトルの通りです.
先に結論
$ lein noir new projectname
ではなくて
$ lein new noir projectname
試行錯誤の記録
現在の環境ならば
$ lein plugin install lein-noir 1.2.0
を実行しようとする時点でおそらくうまく行かない. ~/.lein/profiles.cljを作成して, 設定ファイルに
{:user {:plugins [[lein-noir "1.2.0"]]}}
と書いてからやるとうまく行くらしいんだけど, 怒られたのか, それともうまくいったのかよくわからない(多分ダメそう)な感じに
$ lein plugin install lein-noir 1.2.0 Retrieving lein-noir/lein-noir/1.2.0/lein-noir-1.2.0.pom from clojars Retrieving org/clojure/clojure/1.2.1/clojure-1.2.1.jar from central Retrieving lein-noir/lein-noir/1.2.0/lein-noir-1.2.0.jar from clojars The plugin task has been removed. Please see the upgrade guide for instructions on how to use the user profile to specify plugins instead: https://github.com/technomancy/leiningen/wiki/Upgrading
ほかにも, noirを使おうとするプロジェクトのproject.cljのdependenciesに
[noir "1.2.0"]
を追加してlein depsするといろいろ落としてくるけど,
Retrieving noir/noir/1.2.0/noir-1.2.0.jar from clojars WARNING!!! version ranges found for: [noir "1.2.0"] -> [org.clojure/clojure "[1.3.0,1.3.0],[1.2.1,1.2.1]"] Consider using [noir "1.2.0" :exclusions [org.clojure/clojure]].
なんかこう言われる. ので:exclusionsのあたりを追記してlein depsすると何も出力しない.
とりあえずインストールできたと仮定して,
lein plugin install lein-noir 1.2.0
を再度実行. すると,
$ lein noir new clojurebreaker Warning: *project-dir* not declared dynamic and thus is not dynamically rebindable, but its name suggests otherwise. Please either indicate ^:dynamic *project-dir* or change the name. (leiningen/noir/new.clj:5) Warning: *project* not declared dynamic and thus is not dynamically rebindable, but its name suggests otherwise. Please either indicate ^:dynamic *project* or change the name. (leiningen/noir/new.clj:5) Warning: *dirs* not declared dynamic and thus is not dynamically rebindable, but its name suggests otherwise. Please either indicate ^:dynamic *dirs* or change the name. (leiningen/noir/new.clj:5) Create and manage noir projects. Subtasks available: new Run `lein help noir $SUBTASK` for subtask details. Arguments: ([new])
といわれる. 正直良くわからなくなってしまったのでGoogle先生に聞いてみると,
【Lisp】プログラミング言語 Clojure #3【JVM】
191 :デフォルトの名無しさん:2014/02/14(金) 20:03:15.49 .net
プログラミングClojure第二版の10.4のlein noir new clojurebreaker
って
lein new noir clojurebreaker
の間違いじゃね?
とのことなので, やってみる.
$ lein new noir clojurebreaker Generating a lovely new Noir project named clojurebreaker...
できた.
ほかにも
このclojurebreakerは完全に新しいディレクトを作るべきなのか, それともすでにあるclojurebreakerのディレクトリ内に作るべきなのかとかわからないし, このページの下半分だけすっごく不親切.
どうやら, 今まで使ってきたclojurebreakerプロジェクトとは別に, noirを使ってできたprojectにコード類は移植するってことらしい.
ただ, lein-noir自体が今では開発が終わってしまっていることは本の訳注にもあるし, 実質参考にならないページだと言っていいのかもしれない.
追記
noirのバージョンが, 1.2.0だとlein runで例外を吐く.
lein new noir projectnameしたときにproject.cljに書いてあった1.3.0-beta3でないとダメみたい.
更に追記
Retrieving noir/noir/1.2.0/noir-1.2.0.jar from clojars WARNING!!! version ranges found for: [noir "1.2.0"] -> [org.clojure/clojure "[1.3.0,1.3.0],[1.2.1,1.2.1]"] Consider using [noir "1.2.0" :exclusions [org.clojure/clojure]].
どう見てもclojureのバージョンについての警告なのになぜかnoirのバージョンで怒られているものだと勘違いしていた
まあ, だからどうということでもないけど