def projectMaker()

in build.sbt [12:57]


def projectMaker(projectName: String) = Project(projectName, file(projectName))
  .enablePlugins(RiffRaffArtifact)
  .settings(
    List(
      name := projectName,
      riffRaffManifestProjectName := s"Mobile::${name.value}"
    ) ++ commonAssemblySettings(projectName)
  )
  .dependsOn(common % "compile->compile")
  .aggregate(common)

ThisBuild / libraryDependencySchemes += "org.scala-lang.modules" %% "scala-xml" % VersionScheme.Always
def commonAssemblySettings(module: String): immutable.Seq[Def.Setting[_]] =
  commonSettings ++ List(
    assemblyJarName := s"${name.value}.jar",
    riffRaffPackageType := assembly.value,
    riffRaffUploadArtifactBucket := Option("riffraff-artifact"),
    riffRaffUploadManifestBucket := Option("riffraff-builds")
  )

val commonSettings: immutable.Seq[Def.Setting[_]] = List(
  fork := true, // was hitting deadlock, fxxund similar complaints online, disabling concurrency helps: https://github.com/sbt/sbt/issues/3022, https://github.com/mockito/mockito/issues/1067
  resolvers ++= Resolver.sonatypeOssRepos("releases"),
  libraryDependencies ++= Seq(
    awsLambda,
    awsDynamo,
    awsLambdaLog,
    awsJavaSdk,
    jackson,
    jacksonDataFormat,
    jacksonJsrDataType,
    commonsIo,
    nettyHandler,
    scanamo,
    okHttp,
    slf4jSimple,
    identityAuthCore,
    specsCore,
    specsScalaCheck,
    specsMock
  ),
  ThisBuild / assemblyMergeStrategy := {
    case "META-INF/MANIFEST.MF" => MergeStrategy.discard
    case PathList(ps @ _*) if ps.last equalsIgnoreCase "Log4j2Plugins.dat" => sbtassembly.Log4j2MergeStrategy.plugincache
    case _ => MergeStrategy.first
  },