web-dev-qa-db-ja.com

IDEAでScala sbt-managedプロジェクトを完全にクリーニング、再解決、再構築する方法は?

TL; DR: SBTファイルが変更されたときにIntelliJのすべての依存関係を完全に調整する方法

IntelliJでSBTプロジェクトをセットアップしています。ほとんどの場合、ifは魅力のように機能しますが、依存関係とコンパイラのバージョンを変更することは非常に苦痛です。

私がやりたいのは、SBTファイルを更新し、IntelliJでclean projectのようなものをクリックして、最新の状態にすることです。

私が見つけた最良のメニュー項目はRebuild projectです。新しい依存関係を読み取りますが、古い依存関係は保持するため、外部ライブラリにはScalaランタイムおよびサードパーティライブラリの複数のバージョンが含まれます。

これを回避するには、IntelliJを閉じて、.idea/libraries内のすべてのファイルを削除します。 IntelliJを再起動すると、依存関係が解決されます。動作しますが、メタデータファイルを手動で削除すると、間違ったことをしていることがわかります。

41
Tobber

* .sbtファイルの変更後にIntelliJを更新するには:

  • SBTプロジェクトペインを開きます(メニュービュー/ツールウィンドウ/ SBT)
  • SBTプロジェクトを右クリックします
  • [外部プロジェクトを更新]を選択します

enter image description here

10
Polymerase

SBTファイルを保存すると、IntelliJ IDEAは通常プロジェクトを更新します。保存しない場合は、手動で実行できます。

SBTパネルには[すべてのSBTプロジェクトを更新]ボタンがあります。

enter image description hereenter image description here

IDEAがまだ混乱していて、追加したばかりのパッケージが見つからない場合:

[ファイル]メニューから:

Invalidate Cache ScreenShot

これはかなり大きなハンマーであり、アプリの再起動と、IntelliSenseインデックスの数分間の再構築が必要です。ただし、新しいSBTパッケージを認識するためにIDEAを取得するのは唯一の場合があります。

7
Brent Faust

前に私に起こった、そしてはい、ピタです。

私が通常していることは、プロジェクトから依存関係をすべて手動で削除し、それらすべてを実際に必要なものをsbtに再インポートさせることです。ただし、UIでそれをしないでください。複数選択しても、すべての依存関係の確認を求められます。 (1時間[はい]をクリックします)代わりに、.imlプロジェクトファイル.idea/modulesディレクトリ。

4
Daniel Langdon

次の手順を試してください。

  1. intelliJを閉じる
  2. プロジェクトフォルダ全体をバックアップする
  3. .ideaフォルダーを削除する
  4. 対象フォルダを削除
  5. プロジェクト/ターゲットフォルダーを削除する
  6. intelliJを再度開き、sbtプロジェクトとしてインポートする

これはSBTプロジェクト専用です

3
Max

別の重いハンマーが動作するようです。

  1. IntelliJを閉じます
  2. 削除.ideaフォルダ
  3. 既存のソースからアプリをインポートする
1
cevaris

異なるバージョンのsbtとscalaを異なるプロジェクトで使用していたため、IntelJiが何らかの形で混乱しました。sbtivy2キャッシュフォルダー:

rm -rf ~/.ivy2
rm -rf ~/.sbt
1
Yuchen Zhong

端末/シェル/コマンドプロンプトからアクティベーターを使用している場合は、次のコマンドを使用します。

activator clean

または、intellijを使用してsbtシェルを「クリーン」にするだけです

それは物事をリセットするのに役立ち、次回実行またはコンパイルするときは、最初からやり直す必要があります。

1
Saleh

私のために働いたのは:

1)IntelliJを閉じます

2).idea/libraries内部を削除します

3)IntelliJを起動します

4)右クリックpom.xml Maven > Reimport

その後、外部ライブラリに古いバージョンと重複したライブラリはありませんでした。

0

IDEA 2016.2.4

これらのソリューションはどれも私にとってはうまくいきませんでした。

****上記のいずれかを試す前に。 SBTのバックアップを作成する/ IDEA質問のプロジェクト*****

「build.sbt」を更新した場合、プロジェクトビューの外部ライブラリの依存関係は更新されませんでした。さらに、プロジェクト構造にはまだ古い依存関係が示されていました。何を試してもIDEAは更新されません。

部分的な復元を取得できる唯一の方法は、「。idea」フォルダを別のマシンからコピーすることでした。 SBTプラグインの実装が**** ed! 「.idea/libraries」フォルダーを事前に削除してからIDEAはこのフォルダーを復元しませんでした。何度もプロジェクトをインポートしようとしました。

ひどい :(

補遺:プロジェクトを機能させることができました。 IDEAを含むSBTは完全に障害ではなくなりました。ApacheIvy 2キャッシュが破損している可能性があるため、次のコマンドを実行しました。

$ rm -rf ~/.ivy2/cache/org.scalatest/scalatest_2.11/*
$ rm -rf ~/.ivy2/cache/org.scalactic/scalactic_2.11/*

再起動IDEA=ファイルドロップダウンメニュー項目の下にキャッシュを無効化します。これにより、IDEAおよびSBTの内部アクションがトリガーされます。物語の教訓は、毎日2つの異なるラップトップコンピューターで作業し、それらを更新し続けることです。

また、コマンドラインからSBTを再確認してください。私は0.13.12を使用していました

$ sbt about
$ sbt clean
$ sbt test

また、SBT依存関係プラグインも再確認してください。

0
peter_pilgrim

同意します、それはピタです。何も助けになりませんでした(「無効/再起動」を試み、「。idea/libraries」からファイルを削除して再起動しました)。

私にとって問題を克服する唯一の方法は、IntelliJIdeaキャッシュからプロジェクト関連のフォルダーを手動で削除することでした。これらのフォルダーを次の場所から削除しました(OSXとIntelliJ-Idea 14を使用しています)。

  • / Users/{UserName}/Library/Caches/IntelliJIdea14/compiler/{ProjectName}
  • / Users/{UserName}/Library/Caches/IntelliJIdea14/compile-server/{ProjectName}

これは私を助け、誰かの時間を節約することを願っています。

0
ialekseev