118

leiningen を使用して、clojure プロジェクトをビルドおよび開発したいと考えています。project.clj を変更して、ローカル ディレクトリからいくつかの jar を選択するように指示する方法はありますか?

公開リポジトリにアップロードできない独自の jar がいくつかあります。

また、clojure プロジェクトの「lib」ディレクトリを維持するために leiningen を使用できますか? 多数の clojure プロジェクトが同じ jar ファイルを共有している場合、それらのプロジェクトごとに個別のコピーを維持したくありません。

ありがとう

4

11 に答える 11

64

project.clj ファイルで:resource-pathsを使用するだけです。たとえば、Siebel サーバーに接続するために使用します。プロジェクトディレクトリにリソースディレクトリを作成し、そこにjarファイルをコピーしました。しかしもちろん、より一般的なディレクトリを使用することもできます:

(defproject test-project "0.1.0-SNAPSHOT"
:description "Blah blah blah"
...
:resource-paths ["resources/Siebel.jar" "resources/SiebelJI_enu.jar"])

次に、lein replからSiebel Data Bean インスタンスを作成できます。

(def sbl (com.siebel.data.SiebelDataBean.))
(.login sbl "siebelServer" "user" "password")
...

新しい Java バージョンを使用している場合は、もちろん、より一般的なディレクトリに対して、次のようにパス指定でワイルドカードを使用できます。

:resource-paths ["/tmp/SiebelJars/*"]
于 2012-12-28T13:41:24.763 に答える
53
  1. プロジェクトにディレクトリを作成します。

    mkdir maven_repository

  2. このリポジトリにローカル jar を追加します。

    たとえば、次のコマンドはjaad-0.8.3.jarファイルを maven リポジトリに追加します。

    mvn deploy:deploy-file -Dfile=jaad-0.8.3.jar -DartifactId=jaad -Dversion=0.8.3 -DgroupId=jaad -Dpackaging=jar -Durl=file:maven_repository

  3. に以下を追加project.clj

    :repositories {"local" "file:maven_repository"}

  4. これでレギュラーが動作するlein depsはずです:

    $ lein deps Downloading: jaad/jaad/0.8.3/jaad-0.8.3.pom from local Transferring 0K from local [WARNING] *** CHECKSUM FAILED - Error retrieving checksum file for jaad/jaad/0.8.3/jaad-0.8.3.pom - IGNORING

jar はプロジェクトにチェックインされ、インターネットからはダウンロードされないため、警告は無視できます。

のソース: Leiningen でローカル JAR を使用(コピー後に変更)

于 2012-03-28T23:31:54.770 に答える
39

プライベート jar を入れるlib/と、目的などのためにクラスパスに配置されlein swankます。これは、依存関係管理ツールを使用するポイントを無効にしているように見えますが、実際にそれらの依存関係を管理したくない場合は、Leiningen を「オープンソースの依存関係管理ツール」として扱うことができ、lein clean.

状況がより複雑になるにつれて (より多くのプライベート jar が関与し、それらが進化し、それらのバージョン管理情報を考慮する必要があります)、プライベート Maven リポジトリを作成するという Arthur のアイデアがより適切になる可能性があります。


(HR は Leiningen 固有の部分のカットオフ ポイントを意味します... Clojure ランドでの一般的なビルド / 依存関係管理ツールの話については、以下に続きます。あなたの状況で非常に役立つと思われるいくつかのリンクを含めてください。)

また、現時点では、Clojure に最適なビルド ツールはどれかという問題について、普遍的な合意はありません。Leiningen は、マインドシェアを獲得する一方で、この分野の機能と洗練度を常に獲得しています。つまり、特に、まだ完全ではありません。Pragmatic Bookshelf の「Programming Clojure」の著者である Stuart Halloway からの引用を次に示します。完全な投稿と非常に興味深い議論については、re: Clojure スペースでのビルド ツールなどについては、Leiningen、Clojure and libraries: what am missing? を参照してください。Clojure Google グループのスレッド。多くの参加者は、ローカルであろうとなかろうと、どのリポジトリにも含まれていないローカル依存関係を持つ必要性を具体的に述べ、そのようなシナリオに対して彼らが思いついた解決策について詳しく述べています。おそらく、機能セットが成熟したときに、問題を現在解決できる/将来解決できる可能性があるものがそこにあるかどうかを確認できますか?

いずれにせよ、ライニンゲンは実際には、いくつかの複雑なシナリオに対してまだ良いストーリーを用意していない可能性があります. これがあなたのケースに当てはまると思われる場合 (つまり、プライベート リポジトリのアイデアを検討した後で)、上記のスレッドから取得した Maven ベースの代替手段へのリンクを次に示しますこのブログ投稿Clojure で Maven を使おうとしている人に役立つことを目指しています。私が思い出したように、Meikel Brandmeyer (これも SO 上で彼のオンライン ハンドル kotarak の下) は Gradle (Groovy ビルド システム) を使用して、Clojuresque と呼ばれる Clojure に対応するプラグインを使用しています。Groovyについて最初に知らないので、自分で試したことはありませんが、彼はGroovyで非常に優れた構築行為を実行すると主張しており、mavenとは何の関係もないと信じています-それ自体がプラスである何か私たちの何人かにとって。:-)

于 2010-03-08T22:24:26.800 に答える
34

lein pom; lein jar; lein installライブラリを開発するときにうまく機能することがわかりました。

:repositories開発中のライブラリでこれを行うと、それを必要とするアプリケーションはfoo を必要とせずにそれを使用します。


または、lein do pom, jar, installもう少し簡潔です。


これにより、他のライブラリと同じようにライブラリを呼び出すことができます:dependencies [[project-name "version"]]

于 2012-12-05T22:23:44.667 に答える
15

「正しい」アプローチは、プライベートMavenリポジトリを作成して、jarを単一の場所に保存し、すべてのブランチなどが変更を取得できるようにすることだと思います。これはあなたがしていることにやり過ぎかもしれません。これらがより簡単な方法であるかどうか私は興味があります。

于 2010-03-08T21:47:35.363 に答える
9

プラグインを使用することもできますlein-localrepo: https://github.com/kumarshantanu/lein-localrepo

于 2012-05-06T05:59:15.960 に答える
4

最近の開発はs3-wagon-private、Leiningen用のPhilのプラグインです:https ://github.com/technomancy/s3-wagon-private

これにより、アーティファクトをプライベートリモートリポジトリに公開できるようになります。

于 2012-01-28T20:55:50.357 に答える
2

たぶん、この前の答えfile://を見てください。私は、jarをインストールできるプロジェクト(からアクセス)にローカルなリポジトリをセットアップするためのステップバイステップの手順を提供します。

于 2010-03-08T23:46:14.790 に答える