stasis/build.sbt
2019-06-26 22:08:41 -04:00

150 lines
3.9 KiB
Scala

import Dependencies._
def scala211 = "2.11.12"
def scala212 = "2.12.8"
def scala213 = "2.13"
name := "stasis"
inThisBuild(
List(
organization := "io.stasis",
homepage := Some(url("https://github.com/stasis/stasis")),
licenses := List(
"Apache-2.0" -> url("http://www.apache.org/licenses/LICENSE-2.0"),
"ASM" -> url("https://asm.ow2.io/license.html")
),
developers := List(
Developer(
"gburd",
"Gregory Burd",
"greg@burd.me",
url("https://greg.burd.me")
)
),
scalaVersion := scala212,
crossScalaVersions := List(scala213, scala212, scala211),
resolvers += Resolver.sonatypeRepo("releases"),
scalacOptions ++= Seq(
"-unchecked",
"-deprecation",
// "-Xfatal-warnings"
),
libraryDependencies ++= List(
scalatest.value % Test,
scalacheck % Test,
scalametaTestkit % Test
),
scalacOptions ++= {
CrossVersion.partialVersion(scalaVersion.value) match {
case Some((2, 11)) => Seq("-target:jvm-1.8")
case Some((2, 12)) => Seq("-target:jvm-1.8")
case Some((2, 13)) => Seq("-target:jvm-1.8")
case _ => Seq.empty
}
}
)
)
skip in publish := true
commands += Command.command("ci-test") { s =>
val scalaVersion = sys.env.get("TEST") match {
case Some("2.11") => scala211
case Some("2.12") => scala212
case Some("2.13") => scala213
case _ => scala212
}
val docsTest = if (scalaVersion == scala213) "docs/run" else "version"
s"++$scalaVersion" ::
s"tests/test" ::
s"coreJS/test" ::
docsTest ::
s
}
lazy val core = project
.in(file("stasis-core"))
.settings(
moduleName := "stasis-core",
description := "Implementation of Stasis",
buildInfoSettings,
buildInfoPackage := "io.stasis",
buildInfoObject := "BuildInfo",
projectDependencies ++= Seq(
scalatest.value % Test,
scalametaTestkit % Test
)
)
.enablePlugins(BuildInfoPlugin)
lazy val persist = project
.in(file("stasis-persist"))
.settings(
moduleName := "stasis-persist",
assemblyJarName.in(assembly) := "stasis-persist.jar",
)
.dependsOn(core, rep)
lazy val rep = project
.in(file("stasis-rep"))
.settings(
moduleName := "stasis-rep",
assemblyJarName.in(assembly) := "stasis-rep.jar"
)
.dependsOn(core)
Test / fork := true
Test / parallelExecution := false
Test / logBuffered := false
lazy val test = project
.in(file("stasis-test"))
.settings(
moduleName := "stasis-test",
assemblyJarName.in(assembly) := "stasis-test.jar",
testOptions in Test := Seq(Tests.Argument(TestFrameworks.JUnit,
"-a", "-q", "-v",
"-DJE_TEST=true",
"-Dbuilddir=${basedir}/build",
"-Dunittest.dir=${builddir}/test",
"-Dunittest.testclassloader=${unittest.dir}/testclassloader"
)),
crossPaths := false,
libraryDependencies ++= List(
"org.scalatest" %% "scalatest" % "2.2.2" % Test,
"junit" % "junit" % "4.12" % Test,
"com.novocode" % "junit-interface" % "0.11" % Test //exclude("junit", "junit-dep")
)
)
.disablePlugins(plugins.JUnitXmlReportPlugin)
.dependsOn(core, persist, rep)
val V = "\\d+\\.\\d+\\.\\d+"
val ReleaseCandidate = s"($V-RC\\d+).*".r
val Milestone = s"($V-M\\d+).*".r
lazy val stableVersion = Def.setting {
version.in(ThisBuild).value.replaceAll("\\+.*", "")
}
lazy val buildInfoSettings: Seq[Def.Setting[_]] = Seq(
buildInfoKeys := Seq[BuildInfoKey](
name,
version,
"scalameta" -> scalametaV,
"nightly" -> version.value,
"stable" -> stableVersion.value,
"scala" -> scalaVersion.value,
"scala211" -> scala211,
"scala212" -> scala212,
"scala213" -> scala213,
"coursier" -> coursier,
"commit" -> sys.process.Process("git rev-parse HEAD").lineStream_!.head,
"timestamp" -> System.currentTimeMillis().toString,
scalaVersion,
sbtVersion
),
buildInfoPackage := "io.stasis",
buildInfoObject := "Versions"
)