<?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>chris moos&#039;s blog &#187; build</title>
	<atom:link href="http://chrismoos.com/tag/build/feed/" rel="self" type="application/rss+xml" />
	<link>http://chrismoos.com</link>
	<description>coding my way through life</description>
	<lastBuildDate>Sun, 18 Sep 2011 19:48:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Getting started with Scala using&#160;SBT</title>
		<link>http://chrismoos.com/2010/02/10/getting-started-with-scala-using-sbt/</link>
		<comments>http://chrismoos.com/2010/02/10/getting-started-with-scala-using-sbt/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 02:13:03 +0000</pubDate>
		<dc:creator>Chris Moos</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[sbt]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://chrismoos.com/?p=707</guid>
		<description><![CDATA[One of my biggest gripes with Java (and all the languages that run on the JVM) is getting my project setup and building it. Maven is not my favorite, and ant..well..I don&#8217;t like it either. Fortunately, if you want to start a new project in Scala, there is a great build tool available that takes [...]]]></description>
			<content:encoded><![CDATA[<p>One of my biggest gripes with Java (and all the languages that run on the JVM) is getting my project setup and building it. Maven is not my favorite, and ant..well..I don&#8217;t like it either. Fortunately, if you want to start a new project in Scala, there is a great build tool available that takes a lot of the pain out of project management and building &#8211; SBT, <a href="http://code.google.com/p/simple-build-tool/">simple-build-tool</a>.</p>
<blockquote><p>sbt is a simple build tool for Scala projects that aims to do the basics well. It requires Java 1.5 or later.</p></blockquote>
<h3>Installing SBT</h3>
<p>
I&#8217;m using Mac OS X, but the following instructions should be pretty much the same on any Unix based OS.
</p>
<p>You can find the latest version of SBT <a href="http://code.google.com/p/simple-build-tool/downloads/list">here</a>.</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> ~<br />
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>simple-build-tool.googlecode.com<span style="color: #000000; font-weight: bold;">/</span>files<span style="color: #000000; font-weight: bold;">/</span>sbt-launcher-0.5.6.jar<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mv</span> sbt-launcher-0.5.6.jar <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>sbt-launcher.jar<br />
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;java -Xmx512M -jar /usr/local/bin/sbt-launcher.jar <span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #000099; font-weight: bold;">\$</span>@<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">tee</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>sbt<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> +x <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>sbt</div></td></tr></tbody></table></div>
<p>This will install the SBT jar and create a script called <em>sbt</em> that will allow you to run the sbt jar.</p>
<p>Just type <em>sbt</em> and press enter, and you now have access to sbt.</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ sbt<br />
Project does not exist, create new project? <span style="color: #7a0874; font-weight: bold;">&#40;</span>y<span style="color: #000000; font-weight: bold;">/</span>N<span style="color: #000000; font-weight: bold;">/</span>s<span style="color: #7a0874; font-weight: bold;">&#41;</span> : n</div></td></tr></tbody></table></div>
<p><span id="more-707"></span></p>
<h3>Creating a new Scala project</h3>
<p>Now we will create a Hello World Scala project with SBT.</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> hello_scala<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> hello_scala</div></td></tr></tbody></table></div>
<p>Running the <em>sbt</em> command in a directory where there is no project will prompt you to create one.</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sbt</div></td></tr></tbody></table></div>
<div class="codecolorer-container java blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Project does not exist, create <span style="color: #000000; font-weight: bold;">new</span> project<span style="color: #339933;">?</span> <span style="color: #009900;">&#40;</span>y<span style="color: #339933;">/</span>N<span style="color: #339933;">/</span>s<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> y<br />
<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aname+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Name</span></a><span style="color: #339933;">:</span> Hello, Scala<span style="color: #339933;">!</span><br />
Organization <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">:</span> <br />
Version <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1.0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">:</span> <br />
Scala version <span style="color: #009900;">&#91;</span>2.7.7<span style="color: #009900;">&#93;</span><span style="color: #339933;">:</span> <br />
sbt version <span style="color: #009900;">&#91;</span>0.5.6<span style="color: #009900;">&#93;</span><span style="color: #339933;">:</span> <br />
<span style="color: #339933;">::</span> retrieving <span style="color: #339933;">::</span> sbt#boot<br />
&nbsp; &nbsp; confs<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #000000; font-weight: bold;">default</span><span style="color: #009900;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #cc66cc;">2</span> artifacts copied, <span style="color: #cc66cc;">0</span> already retrieved <span style="color: #009900;">&#40;</span>9911kB<span style="color: #339933;">/</span>72ms<span style="color: #009900;">&#41;</span><br />
<span style="color: #339933;">::</span> retrieving <span style="color: #339933;">::</span> sbt#boot<br />
&nbsp; &nbsp; confs<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #000000; font-weight: bold;">default</span><span style="color: #009900;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #cc66cc;">3</span> artifacts copied, <span style="color: #cc66cc;">0</span> already retrieved <span style="color: #009900;">&#40;</span>3409kB<span style="color: #339933;">/</span>15ms<span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#91;</span>success<span style="color: #009900;">&#93;</span> Successfully initialized directory structure.<br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> Building project Hello, Scala<span style="color: #339933;">!</span> <span style="color: #cc66cc;">1.0</span> using sbt.<span style="color: #006633;">DefaultProject</span><br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> &nbsp; &nbsp;with sbt 0.5.6 and Scala 2.7.7<br />
<span style="color: #009900;">&#91;</span>success<span style="color: #009900;">&#93;</span> Build completed successfully.<br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> <br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> Total build time<span style="color: #339933;">:</span> <span style="color: #cc66cc;">0</span> s</div></td></tr></tbody></table></div>
<p>Awesome. It handles all the Scala dependencies for us! Now let&#8217;s create a file that contains our Hello, Scala example.</p>
<p>Below is the directory structure of an SBT project.</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ <span style="color: #c20cb9; font-weight: bold;">ls</span><br />
lib project src</div></td></tr></tbody></table></div>
<h3>Creating our HelloScala sources and running</h3>
<p>Now we are going to create our main file, <strong>HelloScala.scala</strong></p>
<p><strong>src/main/scala/HelloScala.scala</strong></p>
<div class="codecolorer-container scala blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="scala codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://scala-lang.org"><span style="color: #0000ff; font-weight: bold;">object</span></a> HelloScala <span style="color: #F78811;">&#123;</span><br />
&nbsp; <a href="http://scala-lang.org"><span style="color: #0000ff; font-weight: bold;">def</span></a> main<span style="color: #F78811;">&#40;</span>args<span style="color: #000080;">:</span> Array<span style="color: #F78811;">&#91;</span>String<span style="color: #F78811;">&#93;</span><span style="color: #F78811;">&#41;</span> <span style="color: #F78811;">&#123;</span><br />
&nbsp; &nbsp; println<span style="color: #F78811;">&#40;</span><span style="color: #6666FF;">&quot;Hello, Scala!&quot;</span><span style="color: #F78811;">&#41;</span><br />
&nbsp; <span style="color: #F78811;">&#125;</span><br />
<span style="color: #F78811;">&#125;</span></div></td></tr></tbody></table></div>
<p>And now we can build and run it by just issuing the following:</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sbt run</div></td></tr></tbody></table></div>
<p>And the output:</p>
<div class="codecolorer-container java blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> Building project Hello, Scala<span style="color: #339933;">!</span> <span style="color: #cc66cc;">1.0</span> using sbt.<span style="color: #006633;">DefaultProject</span><br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> &nbsp; &nbsp;with sbt 0.5.6 and Scala 2.7.7<br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> <br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> compile <span style="color: #339933;">==</span><br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> &nbsp; Source analysis<span style="color: #339933;">:</span> <span style="color: #cc66cc;">0</span> <span style="color: #000000; font-weight: bold;">new</span><span style="color: #339933;">/</span>modified, <span style="color: #cc66cc;">0</span> indirectly invalidated, <span style="color: #cc66cc;">0</span> removed.<br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> Compiling main sources...<br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> Nothing to compile.<br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> &nbsp; Post<span style="color: #339933;">-</span>analysis<span style="color: #339933;">:</span> <span style="color: #cc66cc;">2</span> classes.<br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> compile <span style="color: #339933;">==</span><br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> <br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> copy<span style="color: #339933;">-</span>resources <span style="color: #339933;">==</span><br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> copy<span style="color: #339933;">-</span>resources <span style="color: #339933;">==</span><br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> <br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> run <span style="color: #339933;">==</span><br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> Running HelloScala ...<br />
<span style="color: #006633;">Hello</span>, Scala<span style="color: #339933;">!</span><br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> run <span style="color: #339933;">==</span><br />
<span style="color: #009900;">&#91;</span>success<span style="color: #009900;">&#93;</span> Successful.<br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> <br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> Total time<span style="color: #339933;">:</span> <span style="color: #cc66cc;">0</span> s<br />
<span style="color: #009900;">&#91;</span>success<span style="color: #009900;">&#93;</span> Build completed successfully.<br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> <br />
<span style="color: #009900;">&#91;</span>info<span style="color: #009900;">&#93;</span> Total build time<span style="color: #339933;">:</span> <span style="color: #cc66cc;">1</span> s</div></td></tr></tbody></table></div>
<p>And that&#8217;s it. Setting up a new Scala project with SBT is painless. In the next part I will talk about managing dependencies and how SBT makes this also very easy.</p>
<p>You can read a lot more about SBT by checking out <a href="http://code.google.com/p/simple-build-tool/w/list">their wiki</a>.</p>
<p>
<strong>Update 09/18/2011 &#8211; </strong><br />
If you are on a Mac, its probably easier to install sbt this way:</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">brew <span style="color: #c20cb9; font-weight: bold;">install</span> sbt</div></td></tr></tbody></table></div>
</p>
<p>The above command requires homebrew, a package manager for OS X. Get it here: <a href="https://github.com/mxcl/homebrew">https://github.com/mxcl/homebrew</a></p>
]]></content:encoded>
			<wfw:commentRss>http://chrismoos.com/2010/02/10/getting-started-with-scala-using-sbt/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

