Sous-projets SBT avec différentes versions de Scala

Publié le 15 Juin 2017

SBT permet de définir des sous-modules (ou sous-projets) à l'intérieur d'un seul projet.

Cela se fait en utilisant des sous-répertoires pour chaque sous-module puis en déclarant chacun d'eux dans le build.sbt.

lazy val commonSettings = Seq(
  organization := "io.grpc.reactive",
  version := "0.0.0"
)

lazy val runtime = (project in file("runtime"))
  .settings(
    commonSettings,
    scalaVersion := "2.12.2",
    crossScalaVersions := Seq("2.12.2", "2.11.11"),
    name := "GrpcMonixRuntime",
    libraryDependencies ++= Seq(
      "com.trueaccord.scalapb" %% "scalapb-runtime-grpc" % "0.6.0-pre5",
      "io.monix"               %% "monix"                % "2.3.0"
    )
  )

lazy val generator = (project in file("generator"))
  .settings(
    commonSettings,
    scalaVersion := "2.10.6",
    name := "GrpcMonixGenerator",
    libraryDependencies += "com.trueaccord.scalapb" %% "compilerplugin" % "0.6.0-pre5"
  )

Le problème est que par défaut SBT utilise la même version de scala pour tous les sous-modules bien que les settings de chaque sous-module spécifient bien des versions différentes.

Même en compilant avec '+compile' on n'obtient de compilation avec les versions désirées.

La solution consiste à preciser explicitement la version de scala à utiliser:

sbt '++ 2.10.6 generator/compile'

Rédigé par Bliz

Publié dans #Scala

Repost 0
Commenter cet article