2012-09-23 3 views
8

ClojureがMavenについて言及していることについて、記事/ブログ/質問/回答の膨大な数に少し驚きました。JVMのClojureにはMavenが必須ですか?

Javaデベロッパーとして働いていて、デスクトップアプリケーションとWebアプリケーションの両方で作業していたのですが、私は一度もMavenを使用したことがありませんでした(通常、個人的な意見ですが、私がMavenを使って見たプロジェクトは、 "キッチンシンク"を含んでいましたが、より "制御された"ビルドプロセスでビルドされたものですが、より小さなジャー、より速いビルド時間など)。

Clojureアプリケーションを構築するにはMavenが必要ですか?

Leiningenを使用するにはMavenが必須ですか?たとえば、Mavenを使わなくても、外部Jarファイルを依存関係として "手動で"プロジェクトに追加できますか?

Clojure/JVMの世界では、Javaデスクトップ、Webアプリケーション、Androidアプリの両方をビルド、テスト、パッケージ化、出荷することができますMavenが必要ですか?

答えて

14

短い答え:いいえ。Clojureはちょうどjarです。他のJavaライブラリと同じように、あなたは好きなように "raw"として使うことができます。

長い答え:Mavenは必須ではありませんが、Clojure、特にLeiningenを中心としたツールは高度にMavenに対応していますので、Mavenの意志に従えば人生がより楽になります。しかし、ちょっとした作業で、Mavenがなくても仲良くするのは難しいことではありません。職場では、Leiningenと既存のAnt/Ivyベースのビルドインフラストラクチャを組み合わせて使用​​しています。私はAntを使用して依存関係を解決し(Leopardの内部リポジトリから)、Leiningenの:resource-pathsのハックを使用して非Mavenのjarファイルを取得します。ある時点で、私はこのようなことをするための真のプラグインを作っていきますが、今まで私にとってうまくいきました。

また、Eclipse担当者がCounterClockwiseを使用している場合は、クラスパスを手動で管理してEclipse内の他のJavaプロジェクトと同じようにプロジェクトを扱うことができます。 Clojureのコードもいくつか用意されています。

もちろん、いずれのアプローチの欠点は、Mavenの中央サーバーまたはClojarsから入手可能なものを取得する場合は、インフラストラクチャ用に何らかの種類のミラーを設定するか、手動で移行依存関係をプロジェクトに追加します。

+3

ライニングはフードの下でメイヴァンを使用しています。ほとんどの場合、それはそこにあることを知らないし気にしません。 – Bill

+0

しかし、それは人工物がメイヴンレポにあると仮定しています。 –

+0

だから私はほとんどの時間を言った。 :-)また、btw、upvoteを持っています。 – Bill

6

あなたは、それに関して、mavenまたはleiningenを使用する必要はありません。クロージャーREPLを

java -jar clojure-1.3.0.jar 

と実行するとうまくいきます。私はあなたがどこから来ているのかを知っています.1年前、私はあなたと同じ舟の中にいたからです。 Mavenを使用したことはありませんでした。それは、それをうまく使っていない、そして一般的に信頼できないMavenという、偉大なプロジェクトではありませんでした。 Ant + ivyはうまく動作し、誰が必要ですか?

leiningenを使用して、非常にうまくセットアップされたmaven設定を持つ新しいジョブを開始した結果、私は自分の曲を完全に変更しました。私は今、メイヴンが素晴らしいと思っています、そして、私が長い間使ってきたアリにはるかに好きです。

具体的にClojureので、Leiningenをいくつかの利点があります:

  • オートマジックプロジェクトの足場:「新しいレインは、」あなたのための新しいプロジェクトを設定します。それは他の開発者があなたのプロジェクトを理解してすぐにそれを増やすのに役立ちます。
  • 依存関係とプラグイン管理。依存関係を追加するのは簡単ではなく、clojureと緊密に統合された非依存依存関係管理を行うことを認識している素晴らしい方法はありません。
  • "lein repl"はあなたのクラスパスとすべてを正しく設定します。だからこそ、REPLを起動して実行するだけで済みます。
  • アーチファクトの作成:ファットジャー(lein uberjar)を構築することは簡単で、既に設定されています。

だから、leiningenなしでclojureを使用することは間違いありませんが、私は正直なところ、あなたが望む理由は見当たりません。私の意見では、それを使用しない日々の開発のための多くの素晴らしさがあります。

4

「Leiningenを使用する場合は必須ですか?あなたが本当にそれを避けることができないので、あなたが任意のXML

4

Mavenをタッチする必要はありませんが

Leiningenをは、Mavenを使用し、ラップ他の人が正しく指摘しているようClojureのために必須ではありません。

しかし、Mavenを(直接またはleiningen経由で)採用することをお勧めします。これは、Clojureの世界でいくつかの大きな利点があります:

  • あなたが長期でより生産的になります - あなたはそれが設定持ってたら、複雑なビルド、テスト、および展開を見ることはかなり印象的です1つのコマンドで実行します。本当にクラスパスを手動で設定したり、依存関係をダウンロードしたり、バージョン番号を増やしたり、FTPサイトにアップロードしたりしたいですか?
  • JVMでClojureを使用する最大の利点の1つは、Javaライブラリのエコシステムにアクセスすることです。 Mavenは、Javaライブラリの依存関係を自動的に管理するためのツールです。ほとんど必要と思われるものは、Maven CentralリポジトリまたはClojarsリポジトリのいずれかになります。
  • Clojureはの小さな集束ライブラリを持っている傾向があります。これは「シンプル」であり、好きな機能を選択して選ぶことができるためです。同時に、数値的に多くのライブラリ依存性を持つ可能性が高いことも意味します。したがって、ビルド管理システムがより有用になるだろう。
  • のように、Mavenビルドをを「リーン」にすることができます。あなたが好きならば、明らかにあなたは太陽の下であらゆる依存関係を引き出すことができますが、不要な塊を排除することによって、非常に希薄な瓶を作ることもできます。それはあなたの選択です。
  • Clojureの世界では、事実上の標準です。それ以外の場合は、と他の人とのコラボレーションがより簡単にできることを意味します。

P.S.あなたのように、私は5年前にMavenのポイントを実際に見ていませんでした。その後、私はそれを行って、ワークフローにとってどれほど強力なものかを見ました。今私は変換しています:-)

関連する問題