Démarrer un projet sous SBT rapidement, ajouter du code, des dépendances et créer un livrable exécutable sur n'importe quelle plateforme (unix/windows/docker)
Fichier build.sbt
build.sbt
Décrit le build
reload
Pour recharger
set ThisBuild / scalaVersion := "2.12.6"
session save
Pour sauvegarder une session interactive
Ajouter un test
import org.scalatest._
class SlugSpec extends FunSuite with DiagrammedAssertions {
test("Slug should start with S"){
assert("Slug".startsWith("S"))
}
}
Fichier SlugSpec.scala
REPL
Pour lancer le REPL
console
consoleQuick
Avec uniquement les dépendances en classpath
consoleProject
Avec le projet SBT en classpath
File watch
Permet de surveiller les fichiers
~compile
~test
Fonctionne avec toutes les taches
~compileTestAndDeployToProd
Vraiment toutes les taches
Multi-module
Déclaration des projets
val scalaTest = "org.scalatest" %% "scalatest" % "3.0.5"
lazy val slug = (project in file("."))
.aggregate(slugDomain)
.settings(
name := "slug",
libraryDependencies += scalaTest % Test
)
lazy val slugDomain = (project in file("domain"))
.settings(
name := "slugDomain",
libraryDependencies += scalaTest % Test
)
Plugins
De nombreux plugins existent pour
Créer un livrable
S'interfacer avec git
Lancer des tests
Analyse statique
Déployer du code
Générer de la doc
Manipuler une BDD
....
Ajouter un plugin
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.3.4")
Fichier project/plugins.sbt
lazy val slug = (project in file("."))
.enablePlugins(JavaAppPackaging)
Fichier build.sbt
Native packager
Créer un zip exécutable sur Windows et Unix
dist
cd /tmp
unzip <created_zip>
./bin/slug
Lancer l'exécutable
Native packager
Créer une image Docker en local
Docker/publishLocal
docker run slug:0.1.0-SNAPSHOT
Lancer l'image