Wie erstelle ich ein SBT-Projekt mit IntelliJ Idea?

146

Ich habe gerade mit der Entwicklung von Scala / LiftWeb / Sbt begonnen und möchte ein Sbt-Projekt in IntelliJ Idea importieren. Eigentlich konnte ich mein Projekt auf zwei verschiedene Arten importieren:

1) mit Maven. Ich habe ein Maven-Projekt erstellt und darüber hinaus ein Sbt-Projekt erstellt, das ich dann in IntelliJ importiert habe. Ich könnte dann leicht starten, den Steg-Server stoppen und andere Dinge tun. Aber das will ich nicht. Ich möchte das Gleiche tun, nur Maven-frei. Das hat mich dazu geführt

2) mit Eclipse. Also habe ich ein neues Sbt-Projekt erstellt (mit einem kleinen Skript, das ich geschrieben habe und das Sbt-Projekt als WebProject konfiguriert hat). Ich habe dann das sbt-eclipsify-Plugin verwendet, um das Projekt für Eclipse zu "konvertieren", das ich dann in IntelliJ (vorhandene Quelle -> Eclipse) importiert habe. Aber die Probleme begannen hier: Ich kann das IntelliJ Sbt-Plugin nicht zum Laufen bringen.

Kann mir jemand dabei helfen?

ksemeks
quelle
Für jemanden, der eine schnelle Antwort benötigt oder wenn es dringend erforderlich ist, gehen Sie einfach zu Github und finden Sie ein einfaches Scala-Projekt. Laden Sie es herunter und importieren Sie es in Ihre IDE. Sie sollten auf das Scala-Projekt zugreifen können. Glückliche Zeit
Ein Benutzer

Antworten:

170

Es gibt drei grundlegende Möglichkeiten, ein Projekt zu erstellen: Moderne Versionen von IntelliJ können sbt-Projekte sofort importieren. Andernfalls können Sie entweder das sbt-Plugin zum Generieren eines IntelliJ-Projekts oder das IntelliJ Scala-Plugin zum Erstellen eines sbt-Projekts verwenden. Grundlegende Funktionen funktionieren sofort mit beiden Lösungen. Bei einigen komplexen Builds können Probleme auftreten. Probieren Sie daher andere Tools aus, um festzustellen, ob sie dort funktionieren.

IntelliJ

IntelliJ IDEA ist heutzutage so viel besser geworden. Die aktuelle Version (14.0.2) unterstützt sofort sbt-Projekte mit dem Scala-Plugin. Installieren Sie einfach das Plugin und Sie sollten in der Lage sein, Scala / sbt-Projekte ohne Probleme zu öffnen.

Scala-Plugin unter Plugins in den Einstellungen

Zeigen Sie mit dem Plugin einfach auf ein sbt-Projekt, und IDEA bietet Ihnen einen Assistenten zum Öffnen dieser Art von Projekten an.

Sbt-Projekt importieren

IntelliJ Scala Plugin

Das IntelliJ-Plugin finden Sie hier http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEA oder kann direkt in der IDE über das Dialogfeld Einstellungen -> Plugins installiert werden. Danach kann man einfach Datei -> Neues Projekt -> Scala -> SBT-basiert machen. IntelliJ generiert grundlegende build.sbt, lädt die erforderlichen Abhängigkeiten herunter und öffnet das Projekt.

SBT Plugin

Das Sbt-Plugin, das ein Ideenprojekt basierend auf den Sbt-Dateien generiert, finden Sie hier: https://github.com/mpeltonen/sbt-idea

SBT 12.0+ & 13.0+

Fügen Sie einfach addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.2")zu Ihrem hinzu build.sbt; Es werden keine zusätzlichen Resolver benötigt.

Ältere Versionen:

SBT 0.11+

Erstellen Sie die folgenden Zeilen und fügen Sie sie zu ~/.sbt/plugins/build.sbtOR hinzuPROJECT_DIR/project/plugins.sbt

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")

Verwenden Sie gen-ideain sbt, um IDEA-Projektdateien zu erstellen.

Standardmäßig werden Klassifizierer (dh Quellen und Javadocs) von sbt- und Bibliotheksabhängigkeiten geladen, wenn sie gefunden und Referenzen zu IDEA-Projektdateien hinzugefügt werden. Wenn Sie sie nicht herunterladen / referenzieren möchten, verwenden Sie den Befehl gen-idea no-classifiers no-sbt-classifiers.


SBT 0.10.1 (laut Plugin-Autor funktioniert 0.10.0 nicht !)

Erstellen Sie die folgenden Zeilen und fügen Sie sie zu ~ / .sbt / plugins / build.sbt hinzu:

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

libraryDependencies += "com.github.mpeltonen" %% "sbt-idea" % "0.10.0"

Verwenden Sie die gen-ideasbt-Aufgabe, um IDEA-Projektdateien zu erstellen.

Standardmäßig werden Klassifizierer (dh Quellen und Javadocs) von sbt- und Bibliotheksabhängigkeiten geladen, wenn sie gefunden und Referenzen zu IDEA-Projektdateien hinzugefügt werden. Wenn Sie sie nicht herunterladen / referenzieren möchten, verwenden Sie den Befehl gen-idea no-classifiers no-sbt-classifiers.


SBT 0.7

Um es zu verwenden, führen Sie dies einfach über Ihre sbt-Shell aus. Das Plugin wird als externes Programm verwendet:

 > *sbtIdeaRepo at http://mpeltonen.github.com/maven/
 > *idea is com.github.mpeltonen sbt-idea-processor 0.4.0
 ...
 > update
 ...
 > idea
 ...

Sie können Ihrer Projektdefinition auch beliebige Merkmale hinzufügen:

import sbt._
class MyProject(info: ProjectInfo) extends ParentProject(info) with IdeaProject {
  lazy val mySubProject = project("my-subproject", "my-subproject", new DefaultProject(_) with IdeaProject)
   // ...
}
Steve Gury
quelle
4
Ich bin total auf dieses Plugin umgestellt. Verwenden Sie es in Kombination mit dem idea-sbt-Plugin, mit dem Sie Ihren Projektaufbau an SBT delegieren und SBT interaktiv über ein Toolfenster in IDEA verwenden können. Version 0.2.0-SNAPSHOT von sbt-idea behebt einige kleine Probleme - das Erstellen eines übergeordneten Projekts und das Beibehalten der manuellen IntelliJ-Konfiguration.
Retronym
Vielen Dank für dieses Plugin. Es ist wirklich hilfreich!
Ksemeks
4
Ich ziehe meine Antwort zurück. Dies ist ein großartiges Plugin und ich benutze es jetzt jedes Mal.
Synesso
1
Ich habe eine Antwort für SBT 0.10.0 hinzugefügt, die sich völlig von SBT 0.7.x + stackoverflow.com/questions/4250318/… unterscheidet
opyate
Danke opyate, ich habe meinen Beitrag gemäß Ihrem Kommentar aktualisiert
Steve Gury
11

Im Moment mache ich das von Hand. Es ist ganz einfach.

  1. Erstellen Sie das Projekt mit SBT
  2. Erstellen Sie ein neues IDEA-Projekt mit demselben Stammpfad
  3. Erstellen Sie ein Modul mit demselben Stammpfad
  4. Legen Sie src / main / scala als src-Pfad auf dem Modul fest
  5. Legen Sie src / test / scala als Testpfad für das Modul fest
  6. Fügen Sie scala-library.jar als Bibliothek hinzu
  7. Fügen Sie lib (falls vorhanden) als JAR-Verzeichnis in einer Modulbibliothek hinzu
  8. Fügen Sie lib_managed / compile (falls vorhanden) als JAR-Verzeichnis in einer Modulbibliothek hinzu
  9. Fügen Sie lib_managed / test (falls vorhanden) als JAR-Verzeichnis in einer Modulbibliothek hinzu

Das war's aus dem Gedächtnis. Es wäre besser, wenn es automatisiert wäre, aber es ist keine große Sache, wie es jetzt ist.

Ein Hinweis zur Vorsicht: Der obige Ansatz funktioniert nicht gut mit sbt der neuen Schule, dh Versionen 0.10 und neuer, da Abhängigkeiten standardmäßig nicht in lib_managed kopiert werden. Du kannst hinzufügen

retrieveManaged := true

in Ihre build.sbt, damit die Abhängigkeiten in lib_managed kopiert werden.

Synesso
quelle
Aber starten Sie Ihr Projekt (Steg) von IntelliJ oder von einem Terminal aus? Ich kann den Projektstarter / Compiler nicht über die IDE einrichten.
Ksemeks
Noch etwas: Ich habe alles getan, was Sie geschrieben haben, aber IntelliJ sagt "Kann das Symbol ne nicht auflösen" für den Import "import net.liftweb.LiftRules"
ksemeks
Ich habe es geschafft, den Import zu umgehen. Ich musste / lib_managed / compile anstelle von / lib_managed
ksemeks
6
Antwort zurückgezogen! Verwenden Sie das sbt-idea Plugin.
Synesso
7

Tempus Fugit und IntelliJ IDEA sind heutzutage so viel besser geworden. Es ist doch 2015, nicht wahr?

Having said that, die neueste Version von IntelliJ IDEA 14.0.2 unterstützt Projekte aus der Box mit SBT der Scala - Plugin . Installieren Sie einfach das Plugin und Sie sollten in der Lage sein, Scala / sbt-Projekte ohne große Probleme zu öffnen.

Scala-Plugin unter Plugins in den Einstellungen

Ich verwende die Early Access-Version des Plugins, die zum Zeitpunkt des Schreibens 1.2.67.6.EAP ist.

Mit dem Plugin zeigen Sie einfach auf ein sbt-Projekt und IDEA bietet Ihnen einen Assistenten zum Öffnen dieser Art von Projekt.

Sbt-Projekt importieren

Über sbt-idea in sbt 0.12.4

Für sbt 0.12.4 sollte die systemweite Plugin-Konfigurationsdatei - ~/.sbt/plugins/build.sbtoder PROJECT_DIR/project/plugins.sbt- die folgenden Zeilen enthalten:

resolvers += "Sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"

addSbtPlugin(dependency="com.github.mpeltonen" % "sbt-idea" % "1.5.0-SNAPSHOT")

Ausführen sbt gen-idea, um IDEA-Projektdateien zu generieren.

Weitere Informationen finden Sie auf der Website des sbt-idea-Plugins . Vielleicht finden Sie auch meinen Blogeintrag Importieren eines sbt-basierten Projekts in IntelliJ IDEA 13 (mit sbt-idea, Scala 2.11 und sbt 0.12) hilfreich.

Jacek Laskowski
quelle
Beim Erstellen eines neuen Projekts. Nach sbt gen-idea ist das Projekt leer. Keine Struktur, kein src, Testordner. Und es ist lahm ..
ses
Wie haben Sie das Projekt erstellt? Wie ist die Verzeichnisstruktur und die darin enthaltenen Dateien?
Jacek Laskowski
Es ist einfach leer. Ich musste es "main / scala / src" von Hand kisten. Aber damit kann ich leben.
Ses
Möglicherweise möchten Sie github.com/n8han/giter8 als Bootstrapping für ein sbt-Projekt verwenden. sbt kann ein leeres Verzeichnis haben, da das Hauptprojekt und main / scala / src nicht benötigt werden. Legen Sie einfach Ihre Scala-Dateien im Hauptverzeichnis ab, damit sbt sie auswählen kann.
Jacek Laskowski
5

Für sbt 0.7

Siehe die Antwort an anderer Stelle auf dieser Seite .

Für sbt 0.10

Klone und baue Ismaels sbt-Idee:

git clone https://github.com/ijuma/sbt-idea.git
cd sbt-idea
git checkout sbt-0.10
./sbt package

Erstellen Sie ein sbt-Plugin-lib-Verzeichnis, falls Sie noch keines haben

mkdir -p  ~/.sbt/plugins/lib

Kopieren Sie das in Schritt 1 eingebaute Glas hierher

cp sbt-idea/target/scala-2.8.1.final/*.jar ~/.sbt/plugins/lib

Starten Sie sbt neu oder laden Sie sbt neu, dann können Sie es ausführen gen-idea(oder gen-idea with-classifierswenn Sie Quellen und Javadoc auch in IntelliJ möchten)

Quelle: Vorschlag der Tacker zur Nachrichtengruppe .

In IntelliJ IDEA 13.x selbst

Sie können heutzutage in IDEA ein SBT-basiertes Projekt eröffnen. Es erstellt das erforderliche Projekt und die erforderlichen Module und hält Ihre Abhängigkeiten auf dem neuesten Stand, wenn Sie Änderungen an den Build-Skripten vornehmen.

opyate
quelle
2

Ich habe gerade all diesen Schmerz durchgemacht. Ich verbringe Tage damit, eine akzeptable Umgebung zu schaffen, und bin zu dem Schluss gekommen, dass ENSIME, SBT und JRebel für einige Zeit meine Entwicklungsumgebung sein werden. Ja, es geht zurück zu Emacs, aber ENSIME verwandelt es in ein bisschen oder eine Idee mit Refactoring, Debugging-Unterstützung, Navigation usw. Es ist bei weitem nicht so gut wie Eclipse (Java), aber es sei denn, die Scala-Plugins funktionieren besser am besten wir haben.

Bis die Scala-Entwicklungsumgebungen auf Schnupftabak (Eclipse oder IntelliJ) kommen, werde ich mich nicht darum kümmern. Sie sind einfach viel zu fehlerhaft.

Siehe die Diskussion auf der Aufzugsstelle.

http://groups.google.com/group/liftweb/browse_thread/thread/6e38ae7396575052#

Innerhalb dieses Threads gibt es einen Link zu einem HOWTO für IntelliJ, aber obwohl es irgendwie funktioniert, gibt es viele Probleme, die es etwas weniger nützlich machen.

http://blog.morroni.com/2010/07/14/setup-intellij-9-for-lift-framework-development/comment-page-1/

andyczerwonka
quelle
Ich habe es schon gelesen Dieser Artikel verwendet Maven, mit dem ich arbeiten konnte. Ich versuche jetzt das Gleiche zu tun, nur mit sbt, ohne Maven.
Ksemeks
Ich kann das Projekt für IntelliJ einrichten, um es zu verwenden, kann aber den sbt-Compiler / Launcher nicht verwenden.
Ksemeks
Was ENSIME betrifft: Ist es einfach, sich an die Arbeit zu machen? Ich habe es einmal versucht, aber ich habe nie mit Emacs gearbeitet, deshalb war es ein bisschen schwer für mich. Ist die Arbeit mit Emacs eine Voraussetzung?
Ksemeks
Der folgende Link führt Sie durch ein SBT-Setup. Das hat bei mir funktioniert, aber wieder mit SBT und IntelliJ auf nicht integrierte Weise zu arbeiten, ist wirklich so, als würde man zwei separate Tools verwenden, was ENSIME mit SBT viel natürlicher ist. heikoseeberger.blogspot.com/2010/08/…
andyczerwonka
2

Die Antworten sind alt für 2014. In IntelliJ 13.x ist das Plugin Scala Version 0.41.2 (SBT ist enthalten).

Meine SBT - Version ist 0.13.5 (Klemme: sbt sbtVersion)

Gehen Sie zum Stammordner des Projekts und geben Sie das Terminal ein

sbt idea

Sie sehen zwei neue versteckte Ordner .idea und .idea_modules .

Wählen Sie dann in IntelliJ Datei> Öffnen> das Projekt aus. Es sollte das Projekt ohne Probleme öffnen.

Raymond Chenon
quelle