1

Java/Ant には、Ivy を使用して依存関係をタスクにフェッチし、それらをプロジェクトのローカル lib/ フォルダーに配置するパターンがあります。私はローカル Maven を持ちたくないので、開発者が何かを変更したときにのみ依存関係アップデーターを実行することを期待しています (フェッチされた後に lib/ でライブラリをコミットします)。

SBT の依存関係設定を利用してローカルの lib/ フォルダーに手動でフェッチし、「管理されていない」依存関係 (lib_managed ではなく) として使用するにはどうすればよいですか? 開発者に ivy.home を設定したり、ランチャー構成を構築したりすることを強制したくありません。build.sbt/scala で指定した場所にライブラリをフェッチする、呼び出し可能なタスクがあればよいのです。これが行われた例はありますか?

4

2 に答える 2

0

一般に、マネージドをアンマネージドに変換することはできません。lib/一部の jar を入れても同等の動作が得られる特殊なケースがありますが、一般的にはそうではありません。問題の例:

  1. プラグインは、カスタム構成でダウンロードする jar を要求できますが、管理されていないものはそれらをカバーしません。
  2. 各クラスパス/構成には、すべての jar を含む個別のディレクトリが必要です
  3. 管理されていない依存関係は、関連するメタデータを失います。これは、doc外部サイトに自動的にリンクするために使用されます。たとえば、

これは、Java (Maven/Ivy) 用の既存の依存関係管理ソリューションの一般的な問題です。ロックされたオフライン解決のアイデアを近似することは可能ですが、特にきれいに、簡単に、または柔軟に行うことはできません。(私はIvyのretrieve. _lib_managed/skip in update := trueoffline := trueupdatetarget/

(長期的な方向性として、Adeptは依存関係とオフラインでの使用をロックダウンすることを主要な目標として掲げています。)

于 2013-10-07T21:51:50.207 に答える
0

私は sbt を使用しませんが、ANT で採用するアプローチは、依存関係の管理に ivy を使用できるように、開発者のマシンをセットアップするブートストラップ ターゲットを作成することです。次の例を見てください。

于 2013-10-03T21:57:38.407 に答える