5

私はClojureとJavaに比較的慣れていません。leinプロジェクトのlibフォルダーがleinプロジェクトのgitリポジトリに追加されないのはなぜですか?分散開発に必要なすべてのjarファイルがあれば便利だと思います。

4

4 に答える 4

4

Leiningenプロジェクトでは、project.cljファイルがプロジェクトの依存関係を示し、「lein deps」を実行すると、project.cljファイルにリストされているすべての依存関係がlib/にダウンロードされます。したがって、「lein deps」コマンドと組み合わせたproject.cljは、他の人があなたと同じlib /を複製するために必要なすべてであるため、jarファイルをチェックインする必要はありません。すべてのjarファイルをチェックインするのは冗長であり、スペースの無駄です。

さらに、mblinnが指摘しているように、依存関係が更新されるたびに新しいjarを絶えず変更してコミットするのではなく、依存関係を配布および更新する目的で設計されたアーティファクトリポジトリからjarをプルする方が適切です。これは、プロジェクトが頻繁に変更される可能性のあるスナップショットjarに依存している場合に特に当てはまります。jarをチェックインした場合、スナップショットが更新されるたびに新しいjarをチェックインする必要がありますが、アーティファクトリポジトリからjarをプルするために「leindeps」に依存している場合は、最新の状態を維持できます。努力。ただし、スナップショット以外のjarの場合でも、project.cljでバージョンを変更して依存関係を更新してから、「lein deps」を実行する方が、jarを手動でlib/に配置してチェックインするよりもはるかに簡単で高速です。

上記の説明にアクセスできたと思います。そうでない場合で、アーティファクトリポジトリや依存関係など、説明されている概念の一部が理解できない場合は、お知らせください。説明します。

于 2011-02-18T05:24:38.463 に答える
4

Gitは、バイナリファイルの保存が驚くほど苦手です。jarファイルをチェックインしてからアップグレードを実行する必要がある場合、すぐにリポジトリは数百メガバイトになります。

于 2011-02-18T18:03:55.970 に答える
3

自動依存関係管理の最大の利点の1つは、ライブラリがVCSに保存されないことと、バージョン管理に関する微妙な影響がすべてあることです。

leiningenは内部でmavenアーティファクト解決を使用するため、必要な依存関係がデフォルトリポジトリ、つまりmaven中央リポジトリclojureリリース、およびclojarに見つからない場合に備えて、どのアーティファクトリポジトリを手動で指定する必要があります。

たとえば、まだMavenCentralにデプロイされていないがjava.netプロジェクトkenairepoにあるromev1.0の場合、project.cljに次の行に沿って何かを入力する必要があります。

...
:dependencies [[rome/rome "1.0"] ...]
:repositories {"kenai" "http://download.java.net/maven/2/"}
...
于 2011-02-18T12:48:17.207 に答える
2

Leiningenやその他の依存関係管理ツールの要点は、依存関係を管理することです。これらの依存関係は、ソース管理システムよりもソフトウェアアーティファクトのパブリックリリースを処理するのに適した個別のアーティファクトリポジトリにあります。Leiningenは、Maven(ポピュレートJavaビルド/依存関係管理ツール)リポジトリシステムから便乗します。ただし、Clojure固有のアーティファクトリポジトリもあります。

とにかく、要点は、プロジェクトがproject.cljに持つ依存関係を宣言し、そのproject.cljファイルをソース管理にチェックインすることです。他の開発者はそれをチェックして、「lein deps」を実行してそれらの依存関係をプルダウンし、出来上がり!

于 2011-02-18T04:50:10.080 に答える