build.sbt (38 lines of code) (raw):
import sbtrelease._
import ReleaseStateTransformations._
import sbtversionpolicy.withsbtrelease.ReleaseVersion
name := "thrift-serializer"
organization := "com.gu"
scalaVersion := "2.13.12"
libraryDependencies ++= Seq(
"com.twitter" %% "scrooge-core" % "22.1.0",
"org.apache.thrift" % "libthrift" % "0.17.0",
// this has optimised native binaries for all platforms, so is only worth for long lived apps
"com.github.luben" % "zstd-jni" % "1.4.9-1",
"org.scalatest" %% "scalatest" % "3.0.8" % "test",
"com.gu" %% "content-api-models-scala" % "17.3.0" % "test"
)
// Settings for building the thrift definition used in test
Test / scroogeThriftSourceFolder := { baseDirectory {
base => base / "src/test/thrift"
}.value }
Test / scroogeThriftOutputFolder := (Test / sourceManaged).value
Test / managedSourceDirectories += (Test / scroogeThriftOutputFolder).value
scalacOptions := Seq("-deprecation", "-release:11")
javacOptions ++= Seq("--release", "11")
description := "Serialize thrift models into bytes"
licenses := Seq(License.Apache2)
crossScalaVersions := Seq("2.12.18", "2.13.12")
releaseCrossBuild := true
releaseVersion := ReleaseVersion.fromAggregatedAssessedCompatibilityWithLatestRelease().value
releaseProcess := Seq[ReleaseStep](
checkSnapshotDependencies,
inquireVersions,
runClean,
runTest,
setReleaseVersion,
commitReleaseVersion,
tagRelease,
setNextVersion,
commitNextVersion,
)
Test / testOptions +=
Tests.Argument(TestFrameworks.ScalaTest, "-u", s"test-results/scala-${scalaVersion.value}", "-o")