Scala + IDEA: Pro e contro di SBT e FSC
-
27-10-2019 - |
Domanda
Attualmente sto usando il meccanismo di generazione di idea con FSC per lo sviluppo con Scala. E 'ancora un po' lento e di dover (ri) avviare il server di compilazione è un dolore. Molte persone qui sono suggerendo SBT come strumento di costruire insieme con IDEA.
Quali sono secondo lei i pro ei contro di ogni approccio?
Soluzione
Ho provato entrambi e alla fine preferisco SBT dritto per la compilazione.
Contro? Mi manca molto essere in grado di scegliere attraverso errori di compilazione e fissare il codice direttamente, ma ... la compilazione di SBT è solo molto più veloce.
Il nightly build dell'Idea Scala plugin può variare in termini di qualità / prestazioni, ma è stato sempre meglio ultimamente. Il plugin Scala può ora la bandiera di un certo numero di errori che prima avrei dovuto correre di compilazione per la cattura. (Per esempio, sto correndo nightly build 0.4.693 e le nuove ispezioni metodo sono già morti utile.)
Il mio consiglio per la vita con SBT sulla riga di comando: avviare sbt e lasciarlo in esecuzione in modo interattivo più a lungo possibile per approfittare di tutto ciò che viene caricato e JIT-ed.
SBT lasciato in esecuzione cadrà sopra alla fine, ma dandogli più memoria nel vostro SBT involucro si può fare che accade solo di rado.
Ecco il lancio sbt involucro che funziona per me.
java -Xms512M -Xmx1500M -XX:MaxPermSize=512m -jar `dirname $0`/sbt-launch.jar "$@"
Il mio problema più grande con SBT 0.7 è che va spesso indietro e ricompila grandi fasce di file che sembrano tangenziali solo per il codice mi è stato effettivamente cambiando. (Anche così, ancora più veloce di Idea e FSC!)
Una buona notizia: sbt 0.9 ha alcuni grandi miglioramenti incrementali di compilazione. Purtroppo, il percorso di migrazione 0,7-0,9 è ancora nei suoi primi giorni. La presentazione di Mark Harrah a NEScala è online all'indirizzo http://www.nescala.org/2011/ se 'ri interessati.
plugin utili
- http://github.com/mpeltonen/sbt-idea - facilmente creare e mantenere il progetto Idea in sincronia con il progetto SBT
- http://github.com/orfjackal/idea-sbt-plugin - Consente di creare profili per eseguire SBT dall'interno Idea (ho trovato questo più lento di esecuzione SBT nella riga di comando lo scorso ottobre - ma non vedo orfjackal sta ancora sviluppando quindi dovrei dare un altro colpo)