<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Scala-fr &#187; sbt</title>
	<atom:link href="http://www.scala-fr.org/tags/sbt/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.scala-fr.org</link>
	<description>communauté francophone autour du langage Scala</description>
	<lastBuildDate>Sat, 10 Oct 2009 08:01:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>sbt : Scala Build Tool ou comment compiler son projet Scala</title>
		<link>http://www.scala-fr.org/sbt-scala-build-tool-ou-comment-compiler-son-projet-scala/</link>
		<comments>http://www.scala-fr.org/sbt-scala-build-tool-ou-comment-compiler-son-projet-scala/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 16:50:34 +0000</pubDate>
		<dc:creator>Maxime Biais</dc:creator>
				<category><![CDATA[Compilation]]></category>
		<category><![CDATA[sbt]]></category>

		<guid isPermaLink="false">http://www.scala-fr.org/?p=116</guid>
		<description><![CDATA[Introduction
sbt signifie Scala Build Tool. Encore un outils de compilation ? ant, maven ne suffisent pas ?
sbt se veut non intrusif : vous pouvez l&#8217;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 [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scala-fr.org%2Fsbt-scala-build-tool-ou-comment-compiler-son-projet-scala%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scala-fr.org%2Fsbt-scala-build-tool-ou-comment-compiler-son-projet-scala%2F" height="61" width="51" /></a></div><h1>Introduction</h1>
<p><code>sbt</code> signifie Scala Build Tool. Encore un outils de compilation ? <code>ant</code>, <code>maven</code> ne suffisent pas ?</p>
<p><code>sbt</code> se veut non intrusif : vous pouvez l&#8217;utiliser sans modifier la disposition de votre projet, uniquement en modifiant un descripteur (ce descripteur est écrit en Scala, un peu comme <code>scons</code> pour Python ou <code>rake</code> en Ruby). Pour cela il se base sur le même format de projet que <code>maven</code>.</p>
<pre>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
</pre>
<p>Son principal intérêt est d&#8217;intégrer des outils liés à Scala sans avoir besoin de configurer quoique ce soit:</p>
<ul>
<li>Génération de documentation avec scaladoc.</li>
<li>Tests unitaires avec ScalaTest.</li>
<li>Génération de tests unitaires avec ScalaCheck.</li>
<li>Intégration de specs, framework de <a href="http://fr.wikipedia.org/wiki/Behavior_Driven_Development">behavior driven development</a>.</li>
</ul>
<p>sbt se base sur maven par défaut pour gérer les dépendances.</p>
<h1>Installer sbt</h1>
<p>Malheuresement sbt n&#8217;est pas packagé dans <code>sbaz</code>. Il vous faudra le télécharger et l&#8217;installer à la main.</p>
<p>Pour cela, rien de plus simple, télécharger la dernière version de <em>sbt-launcher.jar</em> sur la <a href="http://code.google.com/p/simple-build-tool/downloads/list">page de téléchargement de sbt</a>.</p>
<p>Puis créer un script shell dans votre PATH, chez moi ça donne ça :</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$ 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 &quot;$@&quot;' &gt; /Users/max/dist/sbin/sbt
$ chmod +x /Users/max/dist/sbin/sbt</pre></div></div>

<p><code>sbt</code> est installé, vous pouvez le l&#8217;utiliser.</p>
<h1>Utiliser sbt</h1>
<p><code>sbt</code> 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).</p>
<p>Lorsque vous lancer <code>sbt</code> dans un répertoire qui ne contient pas les descripteurs, il va vous proposer de créer une structure de projet.</p>
<h2>Créer un projet</h2>
<p>Lancer sbt sans arguments dans le répertoire où vous souhaitez créer votre projet:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$ 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.</pre></div></div>

<p>Voilà, la structure de projet est créée, voici à quoi elle ressemble : </p>
<pre>$ \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
</pre>
<h2>Mode interactif</h2>
<p>Si vous le lancer sans arguments dans un répertoire projet, il démarre en mode interactif:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$ 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.
&gt;</pre></div></div>

<p>Un shell sbt est ouvert, vous pouvez tapez vos commandes. </p>
<h2>Mode batch</h2>
<p>En mode batch vous lancer directement les tâches (Consulter <a href="http://code.google.com/p/simple-build-tool/wiki/RunningSbt">la liste exhaustive des tâches</a>)</p>
<p>Exemple, je viens d&#8217;écrire du code (un simple <code>println("hey !")</code>dans le fichier <code>src/main/scala/sbttest.scala</code>, je lance la tâche <code>run</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$ 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</pre></div></div>

<p>On s&#8217;aperçoit que la tâche <code>run</code> dépend de la tâche <code>compile</code>, et ça tombe bien <img src='http://www.scala-fr.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Vous venez de compiler et de lancer votre premier projet Scala avec sbt et son projet par défaut (sbt.DefaultProject).</p>
<h1>Conclusion</h1>
<p>Ca sera tout pour cet article, il y a pas mal de possibilités qui n&#8217;ont pas été abordées ici. Elles le seront sûrement un peu plus en détails dans les futurs articles.</p>
<p>En apparence <code>sbt</code> 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&#8217;est là que les ennuis commencent.</p>
<p>Même si vous avez l&#8217;habitude, et préférez utiliser maven; si vous êtes développeur Scala, vous aurez sûrement besoin d&#8217;installer sbt pour compiler des projets tiers. Ce sera une bonne occasion pour apprendre quelques commandes, le tester et vous en faire votre opinion.</p>
<p>En savoir plus:</p>
<ul>
<li>Différents modes d&#8217;installation : <a href="http://code.google.com/p/simple-build-tool/wiki/Setup">How to setup sbt</a></li>
<li>Utilisation : <a href="http://code.google.com/p/simple-build-tool/wiki/RunningSbt">Basic usage</a></li>
<li>Aller plus loin dans la mise en place de vos propre option de build: <a href="http://code.google.com/p/simple-build-tool/wiki/BuildConfiguration">Build Configuration</a></li>
</ul>
     ]]></content:encoded>
			<wfw:commentRss>http://www.scala-fr.org/sbt-scala-build-tool-ou-comment-compiler-son-projet-scala/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
