build.sbt (60 lines of code) (raw):
import ReleaseTransformations.*
import sbtversionpolicy.withsbtrelease.ReleaseVersion
ThisBuild / scalaVersion := "2.13.16"
ThisBuild / crossScalaVersions := Seq(
scalaVersion.value,
"3.3.5",
"2.12.20" // Motivated by facia/FAPI clients still on Scala 2.12
)
ThisBuild / scalacOptions := Seq("-deprecation", "-release:11")
lazy val baseSettings = Seq(
organization := "com.gu.etag-caching",
licenses := Seq(License.Apache2),
libraryDependencies ++= Seq(
"org.scalatest" %% "scalatest" % "3.2.19" % Test
),
Test / testOptions +=
Tests.Argument(TestFrameworks.ScalaTest, "-u", s"test-results/scala-${scalaVersion.value}", "-o")
)
lazy val core =
project.settings(baseSettings,
libraryDependencies ++= Seq(
"com.github.blemale" %% "scaffeine" % "5.3.0"
)
)
def awsS3WithSdkVersion(version: Int)=
Project(s"aws-s3-sdk-v$version", file(s"aws-s3/aws-sdk-v$version"))
.dependsOn(`aws-s3-base`)
.settings(baseSettings,
libraryDependencies ++= Seq(
awsSdkForVersion(version),
"com.adobe.testing" % "s3mock-testcontainers" % "4.1.1" % Test
)
)
val awsSdkForVersion = Map(
// 1 -> "com.amazonaws" % "aws-java-sdk-s3" % "1.12.487",
2 -> "software.amazon.awssdk" % "s3" % "2.31.20"
)
lazy val `aws-s3-base` =
project.in(file("aws-s3/base")).settings(baseSettings).dependsOn(core)
lazy val `aws-s3-sdk-v2` = awsS3WithSdkVersion(2)
lazy val `etag-caching-root` = (project in file("."))
.aggregate(
core,
`aws-s3-base`,
`aws-s3-sdk-v2`
).settings(
publish / skip := true,
releaseVersion := ReleaseVersion.fromAggregatedAssessedCompatibilityWithLatestRelease().value,
releaseCrossBuild := true, // true if you cross-build the project for multiple Scala versions
releaseProcess := Seq[ReleaseStep](
checkSnapshotDependencies,
inquireVersions,
runClean,
runTest,
setReleaseVersion,
commitReleaseVersion,
tagRelease,
setNextVersion,
commitNextVersion
)
)