2016-09-19 8 views
2

多くのJVM言語と同様に、JVMアプリケーションのパッケージ化と起動は、さまざまな方法で実行できます。プロダクションのような環境でそれらをデプロイして起動するために、クロージャーとJavaの依存関係がたくさんある大規模なクローゼットプロジェクトをパッケージ化するための確かな方法は何ですか?clojureアプリケーションをパッケージ化して起動する方法は?

答えて

4

leiningenで、あなたは単に介してパッケージすることができます仕事にそのために

java -jar uberjar.jar 

lein uberjar 

これは、あなたがして経由で実行することができ、すべての依存関係と、1瓶にあなたのコードをパッケージ化しますただし、project.clj:mainという名前空間を指定する必要があります。これはAOTをトリガーしますが、後者はbeing able to cleanly use clojure.tools.namespace over your projectなどの他の原因では望ましくないと考えられます。だから、AOTを避けるために、あなたはproject.clj:main名前空間を指定してスキップすることができ、そして単に少しverboseコマンドを実行します:編集提案@bfabryため

java -jar uberjar.jar clojure.main -m your.main.namespace 
+2

おかげで、私はあなたの編集を編集しました。 – Shlomi

+1

私はちょうど#clojureでこれについてかなり長い会話をしていたので、私は、指定することを指摘したほうがいいと思いました:ほとんどのバージョンのleiningenはmainをトリガーします。私はそれがclojure.tools.namespaceを壊していると思うかもしれない主な理由の束には望ましくない可能性があります。だから私はほとんどの人にとっては、2番目の方法はおそらくより望ましいと言うでしょう。 – bfabry

+1

私の編集で、エラーを招くことなく、よりアクセスしやすくなりました。 @bfabryこの知識をより簡単に利用できるようにしてくれたことにとても感謝しています。 – matanster

関連する問題