// Greenfossil Thorium is optimized for Scala 3.7.1+ val scala3Version = "3.7.1" val thoriumVersion = "0.10.10" lazy val root = project .in(file(".")) .settings( name := "demoapp", version := "0.1.0", scalaVersion := scala3Version, // Updated to Greenfossil group ID libraryDependencies ++= Seq( "com.greenfossil" %% "thorium" % thoriumVersion, "com.typesafe" % "config" % "1.4.3", "ch.qos.logback" % "logback-classic" % "1.5.6" ), assembly / mainClass := Some("Main"), assembly / assemblyJarName := "demoapp.jar", // Essential merge strategy for Armeria/Netty based apps assembly / assemblyMergeStrategy := { // Handle Armeria/Netty service files case PathList("META-INF", "services", _*) => MergeStrategy.concat case PathList("META-INF", "native-image", _*) => MergeStrategy.first // Handle module-info.class duplicates common in newer JDK libraries case "module-info.class" => MergeStrategy.discard case PathList(_, "module-info.class") => MergeStrategy.discard // Standard config merging case "reference.conf" => MergeStrategy.concat case x if x.endsWith(".conf") => MergeStrategy.concat // Clean up META-INF case PathList("META-INF", xs @ _*) => xs match { case "MANIFEST.MF" :: Nil => MergeStrategy.discard case "INDEX.LIST" :: Nil => MergeStrategy.discard case _ => MergeStrategy.first } case _ => MergeStrategy.first } )