diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2d45268..21ab7e3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,3 +32,7 @@ jobs: shell: bash run: | sbt +test + - name: Verify assembly + shell: bash + run: | + sbt +package +assembly diff --git a/build.sbt b/build.sbt index 4e6725c..78c5b3f 100644 --- a/build.sbt +++ b/build.sbt @@ -38,6 +38,13 @@ lazy val `spot-complete` = project assembly / assemblyJarName := s"${name.value}_${scalaBinaryVersion.value}-${version.value}.jar", assembly / assemblyOption ~= { _.withIncludeScala(false) + }, + assembly / assemblyMergeStrategy := { + // TODO this okio business may well be wrong. Revisit this once we have an integration test to run. + case "META-INF/okio.kotlin_module" => MergeStrategy.first + case x => + val oldStrategy = (ThisBuild / assemblyMergeStrategy).value + oldStrategy(x) } ) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 4a5c134..c9b09d2 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -6,7 +6,12 @@ object Dependencies { val `opentelemetry-api` = "io.opentelemetry" % "opentelemetry-api" % openTelemetryVersion val `opentelemetry-sdk` = "io.opentelemetry" % "opentelemetry-sdk" % openTelemetryVersion val `opentelemetry-sdk-autoconfigure` = "io.opentelemetry" % "opentelemetry-sdk-extension-autoconfigure" % openTelemetryVersion - val `opentelemetry-exporter-otlp` = "io.opentelemetry" % "opentelemetry-exporter-otlp" % openTelemetryVersion + val `opentelemetry-exporter-otlp` = "io.opentelemetry" % "opentelemetry-exporter-otlp" % openTelemetryVersion excludeAll( + // Okio includes three JVM-versions of kotlin-stdlib. This causes problems for sbt-assembly-plugin. Here we assume + // that by now everyone is running Spark on JDK 11, and we omit JDK 8. + ExclusionRule("org.jetbrains.kotlin", "kotlin-stdlib-jdk7"), + ExclusionRule("org.jetbrains.kotlin", "kotlin-stdlib-jdk8") + ) val `spark-core` = "org.apache.spark" %% "spark-core" % "3.5.1" val scalactic = "org.scalactic" %% "scalactic" % "3.2.19" val scalaTest = "org.scalatest" %% "scalatest" % "3.2.19"