Come creare un progetto SBT con IntelliJ Idea?


146

Ho appena iniziato a sviluppare Scala / LiftWeb / Sbt e vorrei importare un progetto Sbt in IntelliJ Idea. In realtà, sono riuscito a importare il mio progetto in due modi diversi:

1) con Maven. Ho creato un progetto Maven e, soprattutto, ho creato un progetto Sbt, che ho poi importato in IntelliJ. Potrei quindi facilmente avviare, arrestare il server del molo e fare altre cose. Ma non è quello che voglio. Voglio fare le stesse cose, solo senza Maven. Questo mi ha portato a

2) con Eclipse. Quindi, ho creato un nuovo progetto Sbt (con un piccolo script che ho scritto, configurando il progetto Sbt come WebProject). Ho usato quindi il plugin sbt-eclipsify per "convertire" il progetto per Eclipse, che ho poi importato in IntelliJ (fonte esistente -> eclipse). Ma i problemi sono iniziati qui: non riesco a far funzionare il plugin IntelliJ Sbt.

Qualcuno mi può aiutare con questo?


Per qualcuno che ha bisogno di una risposta rapida o se il suo requisito urgente, basta andare su Github e trovare un semplice progetto Scala. Scarica e quindi importa nel tuo IDE. Dovresti essere in grado di accedere al progetto scala. Happy time
Un utente il

Risposte:


170

Esistono tre modi di base per creare un progetto: le versioni moderne di IntelliJ possono importare immediatamente il progetto sbt, altrimenti è possibile utilizzare il plugin sbt per generare il progetto IntelliJ o utilizzare il plugin IntelliJ Scala per creare il progetto sbt. Le funzionalità di base funzionano immediatamente usando entrambe le soluzioni, alcune build complesse possono avere problemi, quindi prova altri strumenti per vedere se funziona lì.

IntelliJ

IntelliJ IDEA è diventato molto meglio in questi giorni. La versione corrente (14.0.2) supporta progetti sbt pronti all'uso con il plugin Scala. Basta installare il plugin e dovresti essere in grado di aprire i progetti Scala / sbt senza problemi.

Plugin Scala in Plugin in Preferenze

Con il plugin, basta puntare su un progetto sbt e IDEA ti offrirà una procedura guidata per aprire quel tipo di progetto.

Importa progetto sbt

Plugin IntelliJ Scala

Il plug-in IntelliJ può essere trovato qui http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEA o può essere installato direttamente dall'IDE tramite la finestra di dialogo Impostazioni -> Plugin. Successivamente si può semplicemente fare File -> Nuovo progetto -> Scala -> basato su SBT. IntelliJ genererà build.sbt di base, scaricherà le dipendenze necessarie e aprirà il progetto.

Plugin SBT

Il plugin Sbt che genera un progetto idea basato sui file sbt è disponibile qui: https://github.com/mpeltonen/sbt-idea

SBT 12.0+ e 13.0+

Aggiungi semplicemente addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.2")al tuo build.sbt; non sono necessari ulteriori resolver.

Versioni precedenti:

SBT 0.11+

Creare e aggiungere le seguenti righe a ~/.sbt/plugins/build.sbtORPROJECT_DIR/project/plugins.sbt

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

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

Utilizzare gen-ideain sbt per creare file di progetto IDEA.

Per impostazione predefinita, vengono caricati i classificatori (ovvero origini e javadocs) delle dipendenze sbt e librerie se trovati e aggiunti riferimenti ai file di progetto IDEA. Se non si desidera scaricare / fare riferimento a loro, utilizzare il comando gen-idea no-classifiers no-sbt-classifiers.


SBT 0.10.1 (secondo l'autore del plugin, 0.10.0 non funzionerà!)

Crea e aggiungi le seguenti righe in ~ / .sbt / plugins / build.sbt:

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

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

Utilizzare l' gen-ideaattività sbt per creare file di progetto IDEA.

Per impostazione predefinita, vengono caricati i classificatori (ovvero origini e javadocs) delle dipendenze sbt e librerie se trovati e aggiunti riferimenti ai file di progetto IDEA. Se non si desidera scaricare / fare riferimento a loro, utilizzare il comando gen-idea no-classifiers no-sbt-classifiers.


SBT 0.7

Per usarlo, eseguilo semplicemente dalla tua shell sbt, utilizzerà il plugin come programma esterno:

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

Puoi anche aggiungere tratti nella definizione del tuo progetto, come desideri:

import sbt._
class MyProject(info: ProjectInfo) extends ParentProject(info) with IdeaProject {
  lazy val mySubProject = project("my-subproject", "my-subproject", new DefaultProject(_) with IdeaProject)
   // ...
}

4
Sono un totale convertito a questo plugin. Usalo in combinazione con il plug-in idea-sbt, che ti consente di delegare la compilazione del tuo progetto a SBT e di utilizzare SBT in modo interattivo da una finestra degli strumenti in IDEA. La versione 0.2.0-SNAPSHOT di sbt-idea risolve alcuni piccoli inconvenienti: creazione di un progetto genitore e conservazione della configurazione manuale di IntelliJ.
retronym

Grazie per questo plugin. È davvero helfpul!
ksemeks,

4
Ritiro la mia risposta. Questo è un ottimo plugin e ora lo uso ogni volta.
Synesso il

1
Ho aggiunto una risposta per SBT 0.10.0, che è completamente diverso da SBT 0.7.x + stackoverflow.com/questions/4250318/...
opyate

Grazie opyate, ho aggiornato il mio post in base al tuo commento
Steve Gury,

11

Per ora lo faccio a mano. È abbastanza semplice.

  1. Crea il progetto con SBT
  2. Crea un nuovo progetto IDEA con lo stesso percorso radice
  3. Crea un modulo con lo stesso percorso di root
  4. Impostare src / main / scala come percorso src sul modulo
  5. Impostare src / test / scala come percorso di test sul modulo
  6. Aggiungi scala-library.jar come libreria
  7. Aggiungi lib (se presente) come directory jar all'interno di una libreria di moduli
  8. Aggiungi lib_managed / compile (se presente) come directory jar all'interno di una libreria di moduli
  9. Aggiungi lib_managed / test (se presente) come directory jar all'interno di una libreria di moduli

È tutto a memoria. Sarebbe meglio se fosse automatizzato, ma non è un grosso problema come lo è ora.

Una nota di cautela: l'approccio di cui sopra non funziona bene con sbt new-school, cioè versioni 0.10 e successive, perché non copia le dipendenze in lib_managed per impostazione predefinita. Puoi aggiungere

retrieveManaged := true

sul tuo build.sbt per farlo copiare le dipendenze in lib_managed.


Ma inizi il tuo progetto (molo) da IntelliJ o da un terminale? Non riesco a impostare il programma di avvio / compilatore dall'IDE.
ksemeks,

Ancora una cosa: ho fatto tutto ciò che hai scritto, ma IntelliJ sta dicendo "Impossibile risolvere il simbolo ne" per l'importazione "import net.liftweb.LiftRules"
ksemeks,

Sono riuscito a evitare l'importazione. Ho dovuto importare / lib_managed / compilare invece di / lib_managed
ksemeks,

6
Risposta ritirata! Usa il plugin sbt-idea.
Synesso il

7

Tempus fugit e IntelliJ IDEA sono diventati molto migliori in questi giorni. Dopotutto è il 2015, no?

Detto questo, l'ultima versione di IntelliJ IDEA 14.0.2 supporta progetti sbt pronti all'uso con il plugin Scala . Basta installare il plugin e dovresti essere in grado di aprire i progetti Scala / sbt senza troppi problemi.

Plugin Scala in Plugin in Preferenze

Sto usando la versione Early Access del plugin che è 1.2.67.6.EAP al momento della stesura.

Con il plugin basta puntare su un progetto sbt e IDEA ti offrirà una procedura guidata per aprire quel tipo di progetto.

Importa progetto sbt

Informazioni su sbt-idea in sbt 0.12.4

Per sbt 0.12.4 il file di configurazione del plugin a livello di sistema - ~/.sbt/plugins/build.sbto PROJECT_DIR/project/plugins.sbt- dovrebbe avere le seguenti righe:

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

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

Esegui sbt gen-ideaper generare file di progetto IDEA.

Leggi il sito Web del plug-in sbt-idea per informazioni più aggiornate. Potresti anche trovare utile il mio post sul blog Importazione di progetti basati su sbt in IntelliJ IDEA 13 (con sbt-idea, Scala 2.11 e sbt 0.12) .


Quando si crea un nuovo progetto. Dopo sbt gen-idea il progetto è vuoto. Nessuna struttura, non src, cartella di prova. Ed è zoppo ..
ses

Come hai creato il progetto? Qual è la struttura della directory e i file all'interno?
Jacek Laskowski,

È solo vuoto. Ho dovuto crearlo a mano "main / scala / src". Ma posso conviverci.
sabato

Potresti voler usare github.com/n8han/giter8 come mezzo per avviare un progetto sbt. sbt può avere una directory vuota come progetto principale e main / scala / src non è necessario - basta posizionare i file Scala nella directory principale per sbt per selezionarli.
Jacek Laskowski,

5

Per sbt 0.7

Vedi la risposta altrove in questa pagina .

Per sbt 0,10

Clona e costruisci l'idea sbt di Ismael:

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

Crea una directory lib plug-in sbt se non ne hai già una

mkdir -p  ~/.sbt/plugins/lib

Copia qui il vaso incorporato nel passaggio uno

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

Riavvia o ricarica sbt, quindi puoi eseguire gen-idea(o gen-idea with-classifiersse vuoi sorgenti e javadoc anche in IntelliJ)

Fonte: suggerimento di Tackers sul gruppo di messaggi .

In IntelliJ IDEA 13.x stesso

Al giorno d'oggi è possibile aprire un progetto basato su SBT in IDEA. Creerà il progetto e i moduli necessari e manterrà aggiornate le vostre dipendenze ogni volta che apportate modifiche agli script di compilazione.


2

Ho appena passato tutto questo dolore. Passo giorni cercando di ottenere un ambiente accettabile e sono giunto alla conclusione che ENSIME, SBT e JRebel saranno il mio ambiente di sviluppo per un po 'di tempo. Sì, sta tornando a Emacs, ma ENSIME lo trasforma in un po 'o in un'idea con refactoring, supporto per il debug, navigazione, ecc. meglio che abbiamo.

Fino a quando gli ambienti di sviluppo di Scala non si saranno messi a fiuto (Eclipse o IntelliJ) non mi preoccuperò. Sono semplicemente troppo buggy.

Vedi la discussione sul sito dell'ascensore.

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

All'interno di quel thread, c'è un collegamento a un HOWTO per IntelliJ, ma sebbene funzioni in qualche modo, ci sono molti problemi che lo rendono un po 'meno utile.

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


L'ho già letto Questo articolo usa Maven, che sono riuscito a far funzionare. Sto provando a fare lo stesso ora, solo con sbt, senza maven.
ksemeks,

Posso impostare il progetto affinché IntelliJ lo utilizzi, ma non riesco a far funzionare il compilatore / launcher sbt.
ksemeks,

Per quanto riguarda ENSIME: è facile iniziare a lavorare? ci ho provato una volta, ma non ho mai lavorato con emacs, quindi è stato un po 'difficile per me. lavorare con emacs è una premessa?
ksemeks,

Il seguente link ti guiderà attraverso una configurazione SBT. Questo ha funzionato per me, ma lavorare di nuovo con SBT e IntelliJ in modo non integrato è davvero come usare due strumenti separati, che ENSIME con SBT è molto più naturale. heikoseeberger.blogspot.com/2010/08/…
andyczerwonka

2

Le risposte sono vecchie per il 2014. In IntelliJ 13.x , il plug-in Scala è ver 0.41.2 (SBT è incluso).

La mia versione è SBT 0.13.5 (terminale: sbt sbtVersion)

Vai alla cartella principale del progetto ed entra nel terminale

sbt idea

Vedrai due nuove cartelle nascoste .idea e .idea_modules .

Quindi in IntelliJ, File> Apri> seleziona il progetto. Dovrebbe aprire il progetto senza alcun problema.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.