2017-11-24 20 views
6

私は非常に大きなプロジェクト(15個以上のサブプロジェクト)に多くの外部依存関係があります。 build.sbtの1行でも変更してからrefreshを押すと、IntelliJはさまざまな依存関係を非常に長い時間(30分以上)解決し続けます。IntelliJのSBTは時間がかかりますが、更新に非常に時間がかかります

これは遅いと思われますか?コマンドラインからのsbtの使用には30秒ほどかかりません。

私が使用しています - を助けることができる

Macbook pro mid 2015 with 16 GB ram 
IntelliJ IDEA Ultimate 2017.2.5 
sbt 0.13.13 
scala 2.11.11 
+1

updateClassifiers遅いことについての詳細を読むことができるオプションが無効になって?また、 "ビルドとインポートにSBTシェルを使用する"オプションを有効にすることもできます。 –

+0

"SBTソースをダウンロードする"がオフになっています。しかし、 "ライブラリソースのダウンロード"はチェックされています。ねえ、SBTシェルがトリックをしました。大変ありがとうございます:-) – Kakaji

答えて

0

@ y.bedrovが示唆するようにIntelliJ内でSBTシェルを有効にしたので、最新のコマンドラインと同じ速さで更新できます!

環境設定>ビルド、実行、配備>ビルドツール> SBT>「ビルドとインポートにSBTシェルを使用する」にチェックを入れます。

+0

FWIWを有効にすると、ビルドのリフレッシュ時間が長くなります。おそらく(他のものの中で)おそらく、プロジェクトのロードを2度実行してから、 'reload'コマンドを発行するからです。私のビルドはかなり大きい(50以上のプロジェクト)ので、実際の最適化のセットはビルド・サイズに依存するはずです。とにかく、それがあなたを助けたら素晴らしい。 – Haspemulator

1

ことの一つは、SBT 0.13.7から始まる可能な設定である依存関係の解決を、キャッシュされています。 http://www.scala-sbt.org/1.0/docs/Cached-Resolution.htmlを、基本的に、あなたのビルドでのすべてのプロジェクトのために、以下の設定を有効にする必要があります:ここを見て、私はこれで3分間に15分からIntelliJのプロジェクトのリフレッシュ時間を削減することができました

updateOptions := updateOptions.value.withCachedResolution(true) 

設定します。まだ理想的ではありませんが、管理が容易です。

実験的な設定であるため、いくつかの注意点があります。そのページには説明があります。基本的に、SNAPSHOTの依存関係がある場合、これを有効にすると状況が悪化するため、そのことを意識してください。

+0

ありがとうございます。私はSBTシェルを現在有効にしています。リフレッシュ時間は数分です。キャッシュされた解決策も試してみましょう。さらに役立つなら、ここで更新してください。 – Kakaji

2

KakajiとHaspemulatorの回答は、〜40分のプロジェクトビルドで〜3分までのインポートを手伝ってくれました。それに加えて、IntelliJ SBTインポートのほとんどの時間は、updateClassifiersコマンドの一部としてIvyからの依存関係を取得するのに費やされたことが分かりました。

これは、プロジェクトをインポートするときに[ライブラリソース]チェックボックスを有効にすると、インポートを実行するたびに発生します。私はあなたが「sbtのソース」をチェックしてもそれが遅くなることを期待しています。なぜならそれは解決すべきより多くのライブラリを意味するからです。 updateClassifiersをスピードアップする

一つの方法は、依存関係の解決にcoursierを使用することです。私はちょうどproject/plugins.sbtに次の行を追加して、今度は〜1分でインポートします。

addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.0.1") 

あなたが「SBTソースをダウンロードし、」持っているhttps://github.com/sbt/sbt/issues/1930

関連する問題