TL; DR: Wie kann ich alle Abhängigkeiten in IntelliJ vollständig abgleichen, wenn sich die SBT-Datei ändert
Ich habe ein SBT-Projekt in IntelliJ eingerichtet. Meistens funktioniert das zwar wie ein Zauber, aber es ist mir ein Schmerz, die Version der Abhängigkeiten und Compiler zu ändern.
Ich hoffe, ich kann meine SBT-Datei aktualisieren und in IntelliJ auf etwas wie clean project klicken, damit sie auf dem neuesten Stand ist.
Der beste Menüpunkt, den ich gefunden habe, ist Rebuild project. Es liest neue Abhängigkeiten, behält jedoch die alten bei, sodass External Libraries mehrere Versionen der Scala-Laufzeit- und Drittanbieter-Bibliotheken enthält.
Um dies zu umgehen, kann ich IntelliJ schließen und alle Dateien in .idea/libraries
löschen. Wenn ich IntelliJ neu starte, werden die Abhängigkeiten neu aufgelöst. Es funktioniert zwar, aber das manuelle Löschen von Metadatendateien zeigt an, dass ich das Falsche mache.
Wenn Sie die SBT-Datei speichern, wird das Projekt normalerweise von IntelliJ IDEA aktualisiert. Wenn nicht, können Sie es manuell tun.
Im SBT-Fenster befindet sich die Schaltfläche Alle SBT-Projekte aktualisieren:
Bei der Gelegenheit, dass IDEA immer noch verwirrt ist und keine Pakete findet, die Sie gerade hinzugefügt haben:
Über das Menü Datei:
Es ist ein ziemlich großer Hammer, der einen Neustart der App erfordert und den IntelliSense-Index mehrere Minuten neu erstellt. Es ist jedoch gelegentlich das einzige, was IDEA dazu bringt, Ihre neuen SBT-Pakete zu erkennen.
Ist mir schon mal passiert und ja, ist eine PITA.
Normalerweise entferne ich manuell alle Abhängigkeiten aus dem Projekt und lasse dann sbt erneut importieren, was tatsächlich benötigt wird. Tun Sie dies jedoch nicht auf der Benutzeroberfläche, da selbst bei Mehrfachauswahl eine Bestätigung für JEDE Abhängigkeit erforderlich ist! (Sie werden eine Stunde lang auf "Ja, ich bin sicher" klicken). Stattdessen gehen Sie direkt aus der .iml
-Projektdatei in Ihrem .idea/modules
-Verzeichnis und löschen.
versuchen Sie folgende Schritte:
Beachten Sie, dass dies nur für SBT-Projekte gilt
Ein weiterer schwerer Hammer scheint aber zu funktionieren.
.idea
Ordner löschenIch habe verschiedene Versionen von sbt und scala für verschiedene Projekte verwendet und IntelJi wurde irgendwie verwirrt. Ich kann das Problem nur beheben, indem Sie die Cache-Ordner sbt
und ivy2
entfernen:
rm -rf ~/.ivy2
rm -rf ~/.sbt
Was für mich funktioniert hat, war:
1) Schließen Sie IntelliJ
2) .idea/libraries
Interna löschen
3) Starten Sie IntelliJ
4) Rechtsklick auf pom.xml Maven > Reimport
Danach gab es keine alten Versionen und doppelten Bibliotheken in den externen Bibliotheken.
IDEE 2016.2.4
Keine dieser Lösungen hat bei mir funktioniert.
**** BEVOR SIE DAS OBEN GENANNTE VERSUCHEN. MACHEN SIE EINE SICHERUNG DES PROJEKTS SBT/IDEA IN QUESTION *****
Wenn ich die Datei 'build.sbt' aktualisiert habe, wurden die Abhängigkeiten der externen Bibliothek von der Projektansicht nicht aktualisiert. Außerdem zeigte die Projektstruktur noch die alten Abhängigkeiten. Egal, was ich versucht habe IDEA würde nicht aktualisiert.
Die einzige Möglichkeit, eine teilweise Wiederherstellung durchzuführen, bestand darin, den Ordner ".idea" von einem anderen Computer zu kopieren. Die Implementierung des SBT-Plugins ist **** ed! Ich habe zuvor den Ordner '.idea/libraries' entfernt und dann IDEA diesen Ordner nicht wiederhergestellt. Ich habe oft versucht, das Projekt erneut zu importieren.
Sehr schlecht :(
ADDENDUM: Ich habe mein Projekt zum Laufen gebracht. Ich denke, SBT mit IDEA ist nicht mehr ganz schuld. Möglicherweise ist mein Apache Ivy 2-Cache beschädigt. Also habe ich folgende Befehle ausgeführt:
$ rm -rf ~/.ivy2/cache/org.scalatest/scalatest_2.11/*
$ rm -rf ~/.ivy2/cache/org.scalactic/scalactic_2.11/*
IDEA mit ungültigem Cache unter dem Dropdown-Menüelement "Datei" neu gestartet. Dies schien einige interne Aktionen in IDEA und SBT auszulösen. Ich habe auch versucht, manuell JARs über die IDE hinzuzufügen, aber es wurde massiv verwirrt. Die Moral der Geschichte ist es, täglich an zwei verschiedenen Laptops zu arbeiten und sie auf dem neuesten Stand zu halten.
Überprüfen Sie auch SBT von der Kommandozeile aus. Ich habe 0.13.12 verwendet
$ sbt about
$ sbt clean
$ sbt test
Überprüfen Sie dies auch mit dem SBT-Abhängigkeits-Plugin.
Stimmen Sie zu, das ist ein PITA. Nichts hat mir geholfen (ich habe "Invalidate/Restart" ausprobiert, Dateien aus ".idea/libraries" entfernt und neu gestartet).
Der einzige Weg, das Problem zu lösen, bestand für mich darin, projektbezogene Ordner manuell aus dem IntelliJIdea-Cache zu entfernen. Ich habe diese Ordner von den folgenden Stellen entfernt (ich verwende OSX und IntelliJ-Idea 14):
Das hat mir geholfen, ich hoffe, es spart jemandem Zeit.
Wenn Sie den Aktivator über eine Terminal-/Shell-/Befehlseingabeaufforderung verwenden, verwenden Sie den folgenden Befehl:
activator clean
Oder "rein" auf der sbt Shell durch intellij
Es sollte helfen, Dinge zurückzusetzen, und wenn Sie das nächste Mal ausführen oder kompilieren, sollte es von Grund auf durchlaufen werden.