Simple Build Tool: Build-Werkzeug aus der Scala-Welt

Mit Simple Build Tool (SBT) schickt sich ein Anwärter aus der Scala-Welt an, das Feld der Build-Management-Werkzeuge von hinten aufzuräumen.

vorlesen Druckansicht 3 Kommentare lesen
Lesezeit: 7 Min.
Von
  • Halil-Cem GĂĽrsoy
Inhaltsverzeichnis

Mit Simple Build Tool (SBT) schickt sich ein Anwärter aus der Scala-Welt an, das Feld der Build-Management-Werkzeuge von hinten aufzuräumen.

Das Simple Build Tool (SBT) stammt aus dem Scala-Umfeld und gehört seit Kurzem zum Software-Stack von Typesafe, womit kommerzieller Support seitens des Unternehmens des Scala-Begründers Martin Odersky verfügbar ist. Für die noch relativ junge Sprache Scala existierte ursprünglich eine nur geringe beziehungsweise kaum Unterstützung durch etablierte Build-Werkzeuge wie Ant und Maven, wodurch der Ruf nach einem neuen Build-Werkzeug für Scala laut wurde. Aber auch Besonderheiten der Sprache wie die mangelnde Binärkompatibilität zwischen den Versionen riefen nach einem insbesondere auf die Bedürfnisse von Scala zugeschnittenen Werkzeug.

SBT ist in Scala geschrieben und in erster Linie fĂĽr Scala-Projekte entwickelt worden. Das merkt der Benutzer recht schnell. Beispielsweise bei der Konfiguration hat er die Wahl entweder zwischen einer Konfigurationsdatei, die auf einer SBT-eigenen DSL basiert und an Scala-Quelltext erinnert, oder gleich der Konfiguration in Scala-Klassen. FĂĽr die meisten Projekte reicht die Konfigurationsdatei sicherlich aus.

Der Anfang mit SBT gestaltet sich einfach: Nach dem Download der JAR-Datei und dem Starten dieser mit einer Java-Runtime werden zunächst alle weiteren Laufzeit-Bibliotheken aus öffentlichen Maven-Repositories heruntergeladen. Dazu gehört Scala selbst. Das kann bei einer langsamen Netzanbindung auch einmal etwas länger dauern, tritt aber nur beim ersten Aufruf auf oder wenn neue Abhängigkeiten in ein Projekt eingefügt wurden beziehungsweise eine neue Scala-Version zum Einsatz kommt. Danach wird das erste Verzeichnis mit dem Namen target angelegt.

Die Verzeichnisstruktur von SBT orientiert sich stark an der von Maven, allerdings legt das Tool beim Anlegen des Projekts nicht eine vollständige Struktur an, sondern nur das oben erwähnte target-Verzeichnis. Zwar lassen sich mit Plug-ins für SBT die Verzeichnisse ebenfalls einrichten, falls man das nicht manuell durchführen möchte. Das erleichtert aber nicht unbedingt den Einstieg in SBT. Eine Anleitung in Form eines Wikis hilft hier weiter.

Unter src/main/scala werden Scala-Quelltexte abgelegt, in src/main/java Java-Klassen. Analog ist der Vorgang bei den Testklassen (src/test/scala und src/test/java). Ein neu eingerichtetes Projekt wird mit Standardwerten konfiguriert. Das geht inzwischen so weit, dass keine initiale Konfigurationsdatei anzulegen ist. Möchte der Benutzer die Konventionen überschreiben (z. B. einen sinnvollen Namen verwenden) muss er, wenn er mit der Konfigurationsdatei anstelle einer Konfigurationsklasse arbeitet, die Datei build.sbt im Hauptverzeichnis des Projekts anlegen (siehe folgenden Code; beachtet sei außerdem, dass zwischen den Zeilen jeweils eine Leerzeile vorhanden sein muss).

name := "MyScalaProject" 

version := "0.1"

organization := "de.adesso.hgu"

javacOptions ++= Seq("-source", "1.6", "-target", "1.6")

scalacOptions += "-deprecation"

scalaVersion := "2.8.1"

libraryDependencies += "org.mockito" % "mockito-all" % "1.8.5" % "test"

libraryDependencies += "org.scala-tools.testing" %% "specs" % "1.6.7"

libraryDependencies += "org.scala-tools.testing" %% "scalacheck" % "1.8"

Die ersten drei Einträge sind analog zu den Maven-POM-Definitionen artifactID (Name), groupID (Organisation) und version. Mit dem Eintrag javacOptions übergibt man Parameter an den Java-Compiler javac. Der Operator "++=" zeigt an, dass mehrere Einträge folgen, mit "+=", dass nur einer erfolgt.