4

プロジェクトの依存関係の 1 つを変更するとsbt、すべての依存関係 (変更されたものだけでなく) の解決が実行されます。特に、マルチモジュールプロジェクトでプロジェクトごとに重複解決を行う場合は、時間がかかります。

なぜ sbt はそのような冗長な解決を行うのですか? 解像度をよりインテリジェントにする方法はありますか?

4

1 に答える 1

1

主な理由は、sbt が競合を解決する必要があるためです。それだけでなく、ivy はすべての -SNAPSHOT 依存関係を頻繁に解決して、最新の情報を保持する必要があります。これは、デフォルトで、sbt が maven が使用する「最も近い」競合解決マネージャーではなく、「最新の」競合解決マネージャーを使用するためです。私の経験では、これによりアーティファクト バージョンの問題が少なくなります。ただし、Mark が述べているように、これは dep ツリー全体を再作成することを意味します。

sbt のすべての解決は ivy に委譲されます。よりインテリジェントにするには、Ivy 用のフックを作成するか、sbt が使用する依存関係管理ライブラリを置き換える必要があります。この解決策の場合、私ができる唯一のことは、以前にキャッシュされたアーティファクト情報を復元するのにかかる時間を短縮する方法でキャッシュを改善することだと思います.

于 2013-10-26T13:20:09.003 に答える