build.sbt (39 lines of code) (raw):

ThisBuild / scalaVersion := "2.13.12" ThisBuild / scalacOptions ++= Seq( "-deprecation", "-Xfatal-warnings" ) val circeVersion = "0.14.6" val awsSdkVersion = "2.31.1" // to resolve merge clash of 'module-info.class' // see https://stackoverflow.com/questions/54834125/sbt-assembly-deduplicate-module-info-class val assemblyMergeStrategyDiscardModuleInfo = assembly / assemblyMergeStrategy := { case PathList(ps @ _*) if ps.last == "module-info.class" => MergeStrategy.discard case PathList("META-INF", "io.netty.versions.properties") => MergeStrategy.discard case PathList("mime.types") => MergeStrategy.filterDistinctLines /* * AWS SDK v2 includes a codegen-resources directory in each jar, with conflicting names. * This appears to be for generating clients from HTTP services. * So it's redundant in a binary artefact. */ case PathList("codegen-resources", _*) => MergeStrategy.discard case PathList("META-INF", "okio.kotlin_module") => MergeStrategy.discard case x => val oldStrategy = (assembly / assemblyMergeStrategy).value oldStrategy(x) } lazy val root = (project in file(".")) .settings( name := "payment-failure-comms", assemblyJarName := s"${name.value}.jar", assemblyMergeStrategyDiscardModuleInfo, riffRaffAwsRegion := "eu-west-1", riffRaffPackageType := assembly.value, riffRaffUploadArtifactBucket := Option("riffraff-artifact"), riffRaffUploadManifestBucket := Option("riffraff-builds"), riffRaffManifestProjectName := s"Retention::${name.value}", riffRaffArtifactResources += (file("cfn.yaml"), "cfn/cfn.yaml"), libraryDependencies ++= Seq( "com.amazonaws" % "aws-lambda-java-core" % "1.2.3", "io.circe" %% "circe-generic" % circeVersion, "io.circe" %% "circe-parser" % circeVersion, "com.squareup.okhttp3" % "okhttp" % "4.12.0", "org.scalatest" %% "scalatest" % "3.2.17" % Test, "software.amazon.awssdk" % "cloudwatch" % awsSdkVersion ) ) .enablePlugins(RiffRaffArtifact)