Configurer Idea pour développer en Scala sous OS X

Mini guide pour démarrer son environnement de développement Scala pour IntelliJ Idea sous OS X.

Installation SBT et Scala

Avec le gestionnaire de paquet Homebrew :

brew install scala --with-docs  
brew install sbt

Pour passer des options supplémentaires à la JVM lors de l’utilisation de SBT, celà se passe via $SBT_OPTS ou dans le fichier ~/.sbtconfig. Utiliser les paramètres "-XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M" pour commencer.

Configuration IntelliJ Idea

Direction la gestion des plugins et installer le plugin Scala disponible dans les plugins maintenus par JetBrains.
Le reste de la configuration se déroulera lors de la première création d’un projet.

Création d’un projet (à la main)

Dans Idea, Create New Project puis choisir Scala Module :

  1. Choisir un nom de projet
  2. Utiliser /usr/local/opt/scala/idea en tant que Scala Home
  3. Cocher Make global libraries

scala-new-project

Le projet est prêt !

Les avertissements ne sont pas activés par défaut à la compilation, l’IDE vous prévient quand même qu’il faut activer certaines options pour avoir le détail des avertissements avec des messages de type : scala: there were 1 feature warning(s); re-run with -feature for details
Il suffit d’aller les options du projet, Open module settings > Facets > Scala et de cocher les avertissements désirés ou de spécifier l’option voulu dans le champ Additional compiler options.

Création d’un projet (SBT)

Structure du build

La structure d’un projet est assez classique pour un langage de la JVM : mkdir -p src/{main,test}/{scala,java,resources}
L’outil de build majeur dans l’univers scala est SBT, le descripteur du projet prend la forme d’un fichier build.sbt:

scalaVersion := "2.10.3"

name := "mon-projet-scala"

version := "1.0"

scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature")

Les options ajoutées à scalac permettent d’afficher les avertissements les plus courants lors de la compilation.
Les lignes vides ne sont pas une blague, c’est vraiment nécessaire à SBT pour détecter la fin d’une propriété de configuration…

Génération des fichiers projets IntelliJ Idea

Dans sa version actuelle (12.1.6), Idea n’intègre pas encore SBT, on ne peut donc pas importer un projet à partir de son descripteur de build comme il est possible de le faire avec Maven ou Gradle.
Il faut donc générer la configuration du projet à l’aide du plugin sbt-idea.
Créer le fichier ~/.sbt/0.13/plugins/build.sbt pour déclarer le plugin de manière globale. Le plugin sera utilisable sur tous les projets sans devoir le déclarer dans chaque build.sbt. 0.13 correspondant à la version de SBT utilisée, ajouter :

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

A la racine du projet exécuter sbt gen-idea pour générer toute la configuration.

Le projet peut maintenant est ouvert dans IntelliJ Idea.

Il se peut que le compilateur scala soit configuré un peu n’importe comment, dans ce cas il faut aller dans les options du projet pour sélectionner un compiler library correct (celui créer en tant que global library par exemple) et supprimer ceux qui sont incorrects.

Mais, ça ne fonctionne pas les scripts ?!

Tous les exemples présentés pour apprendre le langage sont souvent des scripts.
Si vos scripts sont écrits dans des fichiers .scala, Idea essaie de les compiler et échoue :

expected class or object definition
println("hello world")
^

La solution consiste à renommer le script avec l’extension .sc, ce qui le transforme en scala worksheet (source).

Et voilà !

comments powered by Disqus