Introduction
sbt signifie Scala Build Tool. Encore un outils de compilation ? ant, maven ne suffisent pas ?
sbt se veut non intrusif : vous pouvez l’utiliser sans modifier la disposition de votre projet, uniquement en modifiant un descripteur (ce descripteur est écrit en Scala, un peu comme scons pour Python ou rake en Ruby). Pour cela il se base sur le même format de projet que maven.
src/
main/
resources/ # Fichiers à inclure dans le jar principal
scala/ # Sources Scala
java/ # Sources Java
test/
resources # Fichiers à inclire dans le jar de test
scala/ # Sources de Test Scala
java/ # Sources de Test Java
Son principal intérêt est d’intégrer des outils liés à Scala sans avoir besoin de configurer quoique ce soit:
- Génération de documentation avec scaladoc.
- Tests unitaires avec ScalaTest.
- Génération de tests unitaires avec ScalaCheck.
- Intégration de specs, framework de behavior driven development.
sbt se base sur maven par défaut pour gérer les dépendances.
Installer sbt
Malheuresement sbt n’est pas packagé dans sbaz. Il vous faudra le télécharger et l’installer à la main.
Pour cela, rien de plus simple, télécharger la dernière version de sbt-launcher.jar sur la page de téléchargement de sbt.
Puis créer un script shell dans votre PATH, chez moi ça donne ça :
$ echo $PATH
/sw/bin:/sw/sbin:/Users/max/dist/sbin
$ wget http://simple-build-tool.googlecode.com/files/sbt-launcher-0.5.4.jar -O /Users/max/dist/sbin/sbt-launcher.jar
$ echo 'java -Xmx512M -jar `dirname $0`/sbt-launcher.jar "$@"' > /Users/max/dist/sbin/sbt
$ chmod +x /Users/max/dist/sbin/sbt
sbt est installé, vous pouvez le l’utiliser.
Utiliser sbt
sbt se lance en mode interactif ou en mode batch. Le mode batch permet de lancer une suite de tâches les unes à la suite des autres. Le mode interactif lance un shell particulier vous permettant de taper des commandes particulières (tâches ou autres).
Lorsque vous lancer sbt dans un répertoire qui ne contient pas les descripteurs, il va vous proposer de créer une structure de projet.
Créer un projet
Lancer sbt sans arguments dans le répertoire où vous souhaitez créer votre projet:
$ mkdir sbttest
$ sbt
Project does not exist, create new project? (y/N/s) : y
Name: SbtTest
Organization []: scala-fr
Version [1.0]:
Scala version [2.7.5]:
sbt version [0.5.3]:
[...]
[success] Successfully initialized directory structure.
Voilà, la structure de projet est créée, voici à quoi elle ressemble :
$ \tree
|-- lib
|-- project
| |-- boot
| | `-- scala-2.7.5
| | |-- lib
| | | |-- scala-compiler.jar
| | | `-- scala-library.jar
| | |-- sbt-0.5.3
| | | |-- ivy-2.0.0.jar
| | | |-- jsch-0.1.31.jar
| | | `-- sbt_2.7.5-0.5.3.jar
| | `-- update.log
| `-- build.properties
|-- src
| |-- main
| | |-- resources
| | `-- scala
| `-- test
| |-- resources
| `-- scala
`-- target
Mode interactif
Si vous le lancer sans arguments dans un répertoire projet, il démarre en mode interactif:
$ sbt
[info] Building project xxx 0.1 using XXX
[info] with sbt 0.4.6 and Scala 2.7.4
[info] No actions specified, interactive session started. Execute 'help' for more information.
>
Un shell sbt est ouvert, vous pouvez tapez vos commandes.
Mode batch
En mode batch vous lancer directement les tâches (Consulter la liste exhaustive des tâches)
Exemple, je viens d’écrire du code (un simple println("hey !")dans le fichier src/main/scala/sbttest.scala, je lance la tâche run:
$ sbt run
[info] Building project SbtTest 1.0 using sbt.DefaultProject
[info] with sbt 0.5.3 and Scala 2.7.5
...
[info] == compile ==
...
[info] == run ==
[info] Running RunSbtTest ...
hey !
...
[info] Total build time: 1 s
On s’aperçoit que la tâche run dépend de la tâche compile, et ça tombe bien
. Vous venez de compiler et de lancer votre premier projet Scala avec sbt et son projet par défaut (sbt.DefaultProject).
Conclusion
Ca sera tout pour cet article, il y a pas mal de possibilités qui n’ont pas été abordées ici. Elles le seront sûrement un peu plus en détails dans les futurs articles.
En apparence sbt simplifie tout. Pour les projets Scala simple, il sera sûrement parfaitement adapté, mais dès que vous commencez à dévier du chemin classique, ça devient plus complexe et mal documenté; c’est là que les ennuis commencent.
Même si vous avez l’habitude, et préférez utiliser maven; si vous êtes développeur Scala, vous aurez sûrement besoin d’installer sbt pour compiler des projets tiers. Ce sera une bonne occasion pour apprendre quelques commandes, le tester et vous en faire votre opinion.
En savoir plus: