5

私たちは、Clojure-Java の相互運用性を持つプロジェクトに取り組んでいます。この時点で、さまざまな依存関係を持つ 1 つのクラスがあり、それを開発用に Eclipse のユーザー ライブラリに入れましたが、もちろん Leiningen (2.x) を使用するときには役に立ちません。私たちの依存関係のほとんどは独自のものであるため、どこかのリポジトリにはありません。

これを行う最も簡単な/正しい方法は何ですか?

leiningenを見てきました- ローカル jar の依存関係を追加する方法は? 、しかしそれは時代遅れのようですか?

更新:そこで、これらの手順github の lein 展開ドキュメントに従って、jar 用のローカル Maven リポジトリを作成し、project.clj ファイルを次のように編集しました。

:dependencies [[...]
               [usc "0.1.0"]]
:repositories {"usc" "file://maven_repository"}

maven_repository はプロジェクト ディレクトリの下にあります (したがって を使用しませんfile:///)。「lein deps」を実行すると、次のメッセージが表示されました。

Retrieving usc/usc/0.1.0/usc-0.1.0.pom from usc
Could not transfer artifact usc:usc:pom:0.1.0 from/to usc (file://maven_repository): no supported algorithms found
This could be due to a typo in :dependencies or network issues.
Could not resolve dependencies

「サポートされているアルゴリズムが見つかりません」とは何を意味し、どのように修正すればよいですか?

Update2:ここで答えの最後のビットを見つけました。

4

3 に答える 3

1

それらを依存関係として leiningen プロジェクトに追加します。名前とバージョンを構成できます。次に lein deps を実行すると、見つからなかった場合のエラー メッセージが表示され、実行する正確なコマンドが表示されるので、jar をローカル レポジトリにインストールしてから、共有レポを使用することに決めます。この同じプロセスを使用して、そこに依存関係があります。

于 2013-02-08T00:53:41.247 に答える
1

@アーサーの答えは良いですが、詳細が不足しているため、もう少し肉付けしたいと思いました。

  1. 再現性を常に念頭に置いてください。アーティファクトへのアクセスが必要な人が標準的な方法でアーティファクトにアクセスできるようにしない場合は、サポート地獄を求めていることになります。

  2. デプロイに関するドキュメントは、アーティファクトのデプロイについて知る必要があるすべてを見つけるのに適した場所です。あなたはポリグロット環境にいるので、おそらくleinすべてのアーティファクトをデプロイすることはできませんが、少なくとも clojure 固有の jar を S3 に、または必要に応じてファイル共有に入れることはできます。残りのアーティファクトは、Maven または Ant を直接使用して、ファイル サーバーまたは S3 上の Maven リポジトリにアーティファクトをアップロードする必要があります。私の現在の会社では、テクノマンシーの優れたs3 wagon privateを使用して、クローズド ソースのアーティファクトをホストし、オープン ソース化できるものすべてをホストするclojarsを非常に効果的に使用しています。

  3. @Arthur が参照しているのは、lein install. 現在のプロジェクトのコピーをローカル.m2ディレクトリにインストールして、ボックス上の他のプロジェクトがそれらを参照できるようにするだけです。フォルダーに共有ディレクトリを使用するように maven のインストールを構成していない限り.m2(おそらく、お使いの環境では悪い考えではないでしょうか?)、これは、プロジェクトをチェックアウトした他のユーザーがプロジェクトをビルドできないことを意味します。このルートに進みたい場合は、チームの他のメンバーがアクセスできる共有の場所になるようにlocalRepositoryノードを設定する必要があります。$M2_HOME/conf/settings.xml詳細については、ドキュメントを参照してください。

于 2013-02-08T02:43:06.450 に答える
0

YMMVですが、Polyglot Clojure / Javaプロジェクトで作業している場合は、LeiningenではなくMavenを使用するのが最適であることがわかりました。

これは主に、Javaベースのツール(Eclipseなど)がMavenプロジェクトを理解しているが、Leiningenプロジェクトを実際には理解していないためです。優れたCounterclockwiseClojureプラグインを使用すると、徐々に改善されますが、効率的なIDEベースのワークフローを実現するには、統合はまだ十分ではありません。

リポジトリ側では、プライベート共有Mavenリポジトリを設定することをお勧めします。チーム内で複雑な一連の依存関係を管理することを計画している場合は、遅かれ早かれそれが必要になります。弾丸を噛んで今すぐ実行することもできます。

于 2013-02-08T02:35:36.207 に答える