api/build.sbt (69 lines of code) (raw):
import com.typesafe.sbt.SbtNativePackager.autoImport.NativePackagerHelper._
import scalariform.formatter.preferences._
enablePlugins(
UniversalPlugin,
JavaAppPackaging
)
organization := "com.gu"
name := "avatar-api"
version := "1.0"
scalaVersion := "2.12.18"
val ScalatraVersion = "3.1.1"
val jettyVersion = "12.0.20"
val json4sVersion = "4.0.7"
val logbackVersion = "1.5.18"
val logbackAccessVersion = "2.0.6"
val logstashEncoderVersion = "8.1"
val servletApiVersion = "6.0.0"
val identityVersion = "4.31"
val typesafeConfigVersion = "1.2.1"
val amazonawsVersion = "1.12.668"
val scalaLoggingVersion = "3.6.0"
val apacheCommonsVersion = "3.4"
val guardianReleases =
"Guardian releases" at "https://guardian.github.io/maven/repo-releases"
scalacOptions ++= Seq("-feature", "-deprecation", "-target:jvm-1.8")
resolvers ++= Seq(
Classpaths.typesafeReleases,
guardianReleases
)
libraryDependencies ++= Seq(
"org.scalatra" %% "scalatra-jakarta" % ScalatraVersion,
"ch.qos.logback" % "logback-classic" % logbackVersion,
"ch.qos.logback.access" % "logback-access-jetty12" % logbackAccessVersion,
"net.logstash.logback" % "logstash-logback-encoder" % logstashEncoderVersion,
"org.eclipse.jetty.ee10" % "jetty-ee10-servlet" % jettyVersion,
"org.eclipse.jetty" % "jetty-plus" % jettyVersion,
"jakarta.servlet" % "jakarta.servlet-api" % servletApiVersion,
"org.json4s" %% "json4s-native" % json4sVersion,
"org.json4s" %% "json4s-jackson" % json4sVersion,
"org.json4s" %% "json4s-ext" % json4sVersion,
"org.scalatra" %% "scalatra-json-jakarta" % ScalatraVersion,
"org.scalatra" %% "scalatra-scalatest-jakarta" % ScalatraVersion % Test,
"org.mockito" % "mockito-core" % "3.1.0" % Test,
"org.scalatestplus" %% "mockito-5-12" % "3.2.19.0" % Test,
"org.scalatra" %% "scalatra-swagger-jakarta" % ScalatraVersion,
"com.gu.identity" %% "identity-auth-core" % identityVersion,
"com.typesafe" % "config" % typesafeConfigVersion,
"com.amazonaws" % "aws-java-sdk-ses" % amazonawsVersion,
"com.amazonaws" % "aws-java-sdk-sqs" % amazonawsVersion,
"com.amazonaws" % "aws-java-sdk-s3" % amazonawsVersion,
"com.amazonaws" % "aws-java-sdk-sns" % amazonawsVersion,
"com.amazonaws" % "aws-java-sdk-dynamodb" % amazonawsVersion,
"com.typesafe.scala-logging" %% "scala-logging" % scalaLoggingVersion,
"org.apache.commons" % "commons-lang3" % apacheCommonsVersion,
"org.apache.pekko" %% "pekko-connectors-sqs" % "1.0.0"
)
// Transient Dependency Overrides
dependencyOverrides ++= Seq(
// identity-auth-core depends on jackson-module-scala 2.15 which forces Jackson 2.15
// Should be fairly safe to override to 2.18.3
"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.18.3"
)
// Exclude all transitive Akka dependencies
libraryDependencies ~= { deps =>
deps.map(_.excludeAll(ExclusionRule(organization = "com.typesafe.akka")))
}
// identity-auth-core relies on `lift-json` which has not been updated to scala-xml 2.0.0
// Tell SBT to ignore the version conflict. This is fairly accepted practice for scala-xml: https://github.com/sbt/sbt/issues/6997
// Long term fix is that we release a new version of identity-auth-core that uses Json4s instead of lift-json
ThisBuild / libraryDependencySchemes += "org.scala-lang.modules" %% "scala-xml" % VersionScheme.Always
Compile / mainClass := Some("com.gu.adapters.http.JettyLauncher")
// package stuff - note, assumes presence of cfn and rr files
Universal / packageName := normalizedName.value
Universal / mappings ++= directory("conf")
scalariformPreferences := scalariformPreferences.value
.setPreference(DanglingCloseParenthesis, Preserve)
.setPreference(SpacesAroundMultiImports, false)