Skip to content

Instantly share code, notes, and snippets.

@kayvank
Created July 9, 2020 00:28
Show Gist options
  • Save kayvank/ddfd3e829c3d9d1c5459d2c3292ced68 to your computer and use it in GitHub Desktop.
Save kayvank/ddfd3e829c3d9d1c5459d2c3292ced68 to your computer and use it in GitHub Desktop.
sbt-sample
import Dependencies._
import NativePackagerHelper._
import com.typesafe.sbt.packager.docker._
import com.typesafe.sbt.GitVersioning
import TodoListPlugin._
ThisBuild / resolvers ++= Seq(
"Apache Development Snapshot Repository" at
"https://repository.apache.org/content/repositories/snapshots/",
Resolver.mavenLocal
)
ThisBuild / scalaVersion := "2.12.10"
lazy val supportedScalaVersions = List("2.12.8", "2.12.7")
lazy val projectSettings = Seq(
organization := "com.mpgm",
crossScalaVersions := supportedScalaVersions,
scalafmtOnCompile := true,
bloopAggregateSourceDependencies in Global := true,
bloopExportJarClassifiers in Global := Some(Set("sources")),
resolvers ++= Seq(
Resolver.sonatypeRepo("releases"),
Resolver.sonatypeRepo("snapshots"),
"jitpack" at "https://jitpack.io"
),
Test / fork := true,
parallelExecution := false,
Test / testForkedParallel := false,
git.useGitDescribe := true
)
lazy val compilerSettings = CompilerSettings.options
lazy val commonSettings = projectSettings ++ compilerSettings
enablePlugins(GitVersioning)
compileWithTodolistSettings
lazy val root = (project in file("."))
.aggregate(core, compute, valid, etl)
.settings(
// crossScalaVersions must be set to Nil on the aggregating project
crossScalaVersions := Nil,
publish / skip := true
)
lazy val core = (project in file("core"))
.settings(commonSettings: _*)
.settings(
libraryDependencies ++=
coreDependencies ++
flinkDependencies ++
testDependencies
)
lazy val compute = (project in file("compute"))
.settings(commonSettings: _*)
.enablePlugins(JavaAppPackaging)
.settings(
libraryDependencies ++= (flinkDependencies ++ testDependencies),
mainClass in assembly := Some("com.mpgm.compute.Bootstrap"),
assemblyMergeStrategy in assembly := {
case x if Assembly.isConfigFile(x) =>
MergeStrategy.concat
case PathList(ps @ _*)
if Assembly.isReadme(ps.last) || Assembly.isLicenseFile(ps.last) =>
MergeStrategy.rename
case PathList("META-INF", xs @ _*) =>
(xs map { _.toLowerCase }) match {
case ("manifest.mf" :: Nil) | ("index.list" :: Nil) |
("dependencies" :: Nil) =>
MergeStrategy.discard
case ps @ (x :: xs)
if ps.last.endsWith(".sf") || ps.last.endsWith(".dsa") =>
MergeStrategy.discard
case "plexus" :: xs =>
MergeStrategy.discard
case "services" :: xs =>
MergeStrategy.filterDistinctLines
case ("spring.schemas" :: Nil) | ("spring.handlers" :: Nil) =>
MergeStrategy.filterDistinctLines
case _ => MergeStrategy.first
}
case _ => MergeStrategy.first
},
assemblyJarName in assembly :=
s"compute-${version.value}-${scala.sys.env
.getOrElse("CIRCLE_BUILD_NUM", "local-build")}.jar",
test in assembly := {},
assembly / assemblyOption := (assembly / assemblyOption).value
.copy(includeScala = true),
Compile / run := Defaults
.runTask(
Compile / fullClasspath,
Compile / run / mainClass,
Compile / run / runner
)
.evaluated
)
.dependsOn(core % "compile->compile;test->test")
lazy val etl = (project in file("etl"))
.settings(commonSettings: _*)
.enablePlugins(JavaAppPackaging)
.settings(
libraryDependencies ++= (flinkDependencies ++ testDependencies),
assemblyMergeStrategy in assembly := {
case x if Assembly.isConfigFile(x) =>
MergeStrategy.concat
case PathList(ps @ _*)
if Assembly.isReadme(ps.last) || Assembly.isLicenseFile(ps.last) =>
MergeStrategy.rename
case PathList("META-INF", xs @ _*) =>
(xs map { _.toLowerCase }) match {
case ("manifest.mf" :: Nil) | ("index.list" :: Nil) |
("dependencies" :: Nil) =>
MergeStrategy.discard
case ps @ (x :: xs)
if ps.last.endsWith(".sf") || ps.last.endsWith(".dsa") =>
MergeStrategy.discard
case "plexus" :: xs =>
MergeStrategy.discard
case "services" :: xs =>
MergeStrategy.filterDistinctLines
case ("spring.schemas" :: Nil) | ("spring.handlers" :: Nil) =>
MergeStrategy.filterDistinctLines
case _ => MergeStrategy.first
}
case _ => MergeStrategy.first
},
javaOptions in Test ++= Seq(
"-Xss240k",
"-XX:MaxJavaStackTraceDepth=10000",
"-Xmx256m"
),
mainClass in assembly := Some("com.mpgm.valid.Bootstrap"),
assemblyJarName in assembly :=
s"valid-${version.value}-${scala.sys.env
.getOrElse("CIRCLE_BUILD_NUM", default = "local")}.jar",
test in assembly := {}, //why are tests getting stuck?
assembly / assemblyOption := (assembly / assemblyOption).value
.copy(includeScala = true),
Compile / run := Defaults
.runTask(
Compile / fullClasspath,
Compile / run / mainClass,
Compile / run / runner
)
.evaluated
)
.dependsOn(core % "compile->compile;test->test")
lazy val valid = (project in file("valid"))
.settings(commonSettings: _*)
.enablePlugins(JavaAppPackaging)
.settings(
libraryDependencies ++= (flinkDependencies ++ testDependencies),
assemblyMergeStrategy in assembly := {
case x if Assembly.isConfigFile(x) =>
MergeStrategy.concat
case PathList(ps @ _*)
if Assembly.isReadme(ps.last) || Assembly.isLicenseFile(ps.last) =>
MergeStrategy.rename
case PathList("META-INF", xs @ _*) =>
(xs map { _.toLowerCase }) match {
case ("manifest.mf" :: Nil) | ("index.list" :: Nil) |
("dependencies" :: Nil) =>
MergeStrategy.discard
case ps @ (x :: xs)
if ps.last.endsWith(".sf") || ps.last.endsWith(".dsa") =>
MergeStrategy.discard
case "plexus" :: xs =>
MergeStrategy.discard
case "services" :: xs =>
MergeStrategy.filterDistinctLines
case ("spring.schemas" :: Nil) | ("spring.handlers" :: Nil) =>
MergeStrategy.filterDistinctLines
case _ => MergeStrategy.first
}
case _ => MergeStrategy.first
},
javaOptions in Test ++= Seq(
"-Xss240k",
"-XX:MaxJavaStackTraceDepth=10000",
"-Xmx256m"
),
mainClass in assembly := Some("com.mpgm.valid.Bootstrap"),
assemblyJarName in assembly :=
s"valid-${version.value}-${scala.sys.env
.getOrElse("CIRCLE_BUILD_NUM", default = "local")}.jar",
test in assembly := {}, //why are tests getting stuck?
assembly / assemblyOption := (assembly / assemblyOption).value
.copy(includeScala = true),
Compile / run := Defaults
.runTask(
Compile / fullClasspath,
Compile / run / mainClass,
Compile / run / runner
)
.evaluated
)
.dependsOn(core % "compile->compile;test->test")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment