12

Maven に言及している Clojure に関する記事 / ブログ / 質問 / 回答の膨大な数に少し驚いています。

Java 開発者として約 10 年間、デスクトップ アプリと Web アプリの両方に取り組んできましたが、Maven を使用したことは一度もありません (通常、これは個人的な意見ですが、同じように考える人がいることは知っています。 「キッチンシンク」を含むMavenを使用しているのに対し、より「制御された」ビルドプロセスでビルドされたものは「よりクリーン」で、より小さなjarを生成し、ビルド時間が短縮されるなど)。

Clojure アプリを作成する場合、Maven は必須ですか?

Leiningen を使用する場合、Maven は必須ですか? たとえば、Maven を必要とせずに、外部 jar を依存関係として leiningen プロジェクトに「手動で」追加できますか?

私の質問はこれに要約されると思います.Clojure / JVMの世界では、Mavenを必要とせずにJavaデスクトップ、Webアプリ、Androidアプリの両方をビルド、テスト、パッケージ化、出荷できるのと同じように、Mavenを使用せずに逃げることができますか?

4

4 に答える 4

15

簡単な答え:いいえ。Clojureは単なるjarであり、他のJavaライブラリと同じように、好きなように「生」として使用できます。

長い答え:Mavenは必須ではありませんが、Clojureの周りのツール、特にLeiningenは、Mavenと高度に連携しているため、Mavenの意志に従うだけで生活が楽になります。しかし、少しの作業で、Mavenなしでうまくやっていくのはそれほど難しくありません。職場では、Leiningenと既存のAnt/Ivyベースのビルドインフラストラクチャを組み合わせて使用​​しています。私はAntを使用して(キュレートされた内部リポジトリから)依存関係を解決し、次にLeiningenのハックを使用して:resource-pathsMaven以外のjarを取得します。ある時点で、このようなことを行うための真のプラグインを作成しますが、これまでのところ正常に機能しています。

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

もちろん、どちらのアプローチの欠点も、MavenセントラルまたはClojarのいずれかから利用できるものを取得する場合は、インフラストラクチャに何らかのミラーを設定するか、推移的な依存関係を手動でプルダウンして追加する必要があることです。それらをプロジェクトに追加します。

于 2012-09-23T21:57:11.170 に答える
5

他の人が正しく指摘しているように、MavenはClojureに必須ではありません。

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

  • 長期的には生産性が向上します。セットアップが完了すると、複雑なビルド、テスト、デプロイが 1 つのコマンドで実行されるのを見るのは非常に印象的です。本当に手動でクラスパスを設定したり、依存関係をダウンロードしたり、バージョン番号を増やしたり、FTP サイトにアップロードしたりしますか?
  • JVM で Clojure を使用する最大の利点の 1 つは、Java ライブラリ エコシステムにアクセスできることです。Maven は、Java ライブラリへの依存関係を自動的に管理するための最適なツールです。必要になる可能性のあるほぼすべてのものは、Maven Central リポジトリーまたは Clojars リポジトリーにあります。
  • Clojure は、焦点を絞った小さいライブラリを持つ傾向があります。これは、"シンプル" であり、好きな機能を自由に選択できるため、優れています。同時に、数値的に多くのライブラリ依存関係を持つ可能性が高いことも意味します。したがって、ビルド管理システムはより便利になります。
  • 必要に応じて Maven ビルドを「無駄のない」ものにすることができます。明らかに、必要に応じて太陽の下ですべての依存関係を取り込むことができますが、不要なクラフトを除外することで、非常に無駄のない jar を作成することもできます。それはあなたの選択です。
  • これは、Clojure の世界における事実上の標準です。少なくとも、それを使用すると、他のユーザーとのコラボレーションがより簡単になることを意味します。

PS あなたと同じように、私は 5 年前に Maven の要点を本当に理解していませんでした。それから私はそれを試してみて、それが私のワークフローにとってどれほど強力であるかを知りました. 今、私は改宗者です:-)

于 2012-09-24T00:34:02.877 に答える
5

そのために、maven や leiningen を使用する必要はありません。次のコマンドで clojure REPL を実行できます

 java -jar clojure-1.3.0.jar

そしてそれはうまくいきます。一年前、私はあなたと同じ船に乗っていたので、あなたがどこから来たのか知っています。Maven を使用したことがなく、Maven をあまり使用せず、一般的に Maven を信用していない素晴らしいプロジェクトがいくつか見られました。Ant+ivy はうまく機能しますが、maven が必要なのは誰ですか?

leiningen を使用し、非常に適切にセットアップされた Maven 構成を持つ新しいジョブを開始した結果、私は自分の調子を完全に変更しました。私は今、maven は素晴らしいと思います。そして、私が長い間使ってきた ant よりもはるかに気に入っています。

具体的には、clojure の場合、leiningen のいくつかの利点は次のとおりです。

  • automagic project scaffolding: "lein new" が新しいプロジェクトをセットアップします。慣例は重要です。他の開発者があなたのプロジェクトを理解し、すぐに立ち上げるのに役立ちます。
  • 依存関係とプラグインの管理。依存関係を追加するのは些細なことであり、clojure と緊密に統合された Maven 以外の依存関係管理を行うための優れた方法を私が知っているわけではありません。
  • 「lein repl」はクラスパスとすべてを正しくセットアップするので、だまされる必要はありません。REPL を起動して実行するだけです。
  • アーティファクトの作成: ファット ジャー (lein uberjar) の作成は簡単で、既にセットアップされています。

したがって、leiningen なしで clojure を使用することは間違いなく可能ですが、正直なところ、なぜそうしたいのかわかりません。私の意見では、それを使用しないようにするには、日々の開発にはあまりにも多くの優れた点があります。

于 2012-09-23T22:09:09.513 に答える
5

「ライニンゲンを使いたい場合、Mavenは必須ですか?」について

leiningen は Maven を使用およびラップするため、完全に回避することはできませんが、XML に触れる必要はありません。

于 2012-09-23T22:48:47.660 に答える