From 68ce73bb55d42aa33423b9514a3c35142918a681 Mon Sep 17 00:00:00 2001 From: davidtio Date: Sat, 28 Feb 2026 13:42:01 +0800 Subject: [PATCH] Switch to Greenfossil Thorium 0.10.10 on Scala 3.7.1 - Update group ID from io.github.nicoburniske to com.greenfossil - Downgrade thoriumVersion to 0.10.10 - Expand assemblyMergeStrategy for Armeria/Netty service files and module-info.class - Fix Dockerfile COPY path to scala-3.7.1 Co-Authored-By: Claude Sonnet 4.6 --- Dockerfile | 4 ++-- build.sbt | 29 +++++++++++++++++++++++------ 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index 89ec471..c04f4c8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,8 +29,8 @@ FROM eclipse-temurin:25-jre-alpine RUN addgroup -S app && adduser -S app -G app WORKDIR /app -# Adjust path for Scala 3.8.2 -COPY --from=build --chown=app:app /app/target/scala-3.8.2/demoapp.jar ./demoapp.jar +# Adjust path for Scala 3.7.1 +COPY --from=build --chown=app:app /app/target/scala-3.7.1/demoapp.jar ./demoapp.jar USER app EXPOSE 8080 diff --git a/build.sbt b/build.sbt index 34b4fc1..9901075 100644 --- a/build.sbt +++ b/build.sbt @@ -1,5 +1,6 @@ +// Greenfossil Thorium is optimized for Scala 3.7.1+ val scala3Version = "3.7.1" -val thoriumVersion = "0.11.39" +val thoriumVersion = "0.10.10" lazy val root = project .in(file(".")) @@ -7,22 +8,38 @@ lazy val root = project name := "demoapp", version := "0.1.0", scalaVersion := scala3Version, + + // Updated to Greenfossil group ID libraryDependencies ++= Seq( - "io.github.nicoburniske" %% "thorium" % thoriumVersion, + "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 "services" :: _ => MergeStrategy.concat - case _ => MergeStrategy.discard + case "INDEX.LIST" :: Nil => MergeStrategy.discard + case _ => MergeStrategy.first } - case "reference.conf" => MergeStrategy.concat - case x if x.endsWith(".conf") => MergeStrategy.concat case _ => MergeStrategy.first } )