From 61faf2650ab9c79d98a1f4a38bd9e482c941cee0 Mon Sep 17 00:00:00 2001 From: xuwei-k <6b656e6a69@gmail.com> Date: Fri, 3 Apr 2026 20:33:59 +0900 Subject: [PATCH] Add checkLmcoursierPackage task --- .github/workflows/ci.yml | 1 + build.sbt | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c8f172272..b4b183e67 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -140,6 +140,7 @@ jobs: ./sbt -v --client doc ./sbt -v --client publishLocal ./sbt -v --client test + ./sbt -v --client lmCoursierShaded/test ./sbt -v --client "serverTestProj/test" ./sbt -v --client "all $UTIL_TESTS" - name: Build and test (2) diff --git a/build.sbt b/build.sbt index 643545d30..16d10d8d3 100644 --- a/build.sbt +++ b/build.sbt @@ -1320,6 +1320,8 @@ lazy val lmCoursier = project ) .dependsOn(lmCore) +lazy val checkLmcoursierPackage = taskKey[Unit]("") + lazy val lmCoursierShaded = project .in(file("lm-coursier/target/shaded-module")) .settings( @@ -1336,6 +1338,20 @@ lazy val lmCoursierShaded = project ), assembly / assemblyOption ~= { _.withIncludeScala(false) }, conflictWarning := ConflictWarning.disable, + checkLmcoursierPackage := { + val jarFile = assembly.value + IO.withTemporaryDirectory { tmp => + val notLmcoursierPackageClasses = IO + .unzip(jarFile, tmp, _.endsWith(".class")) + .toSeq + .map(f => IO.relativize(tmp, f).getOrElse(sys.error(s"invalid path ${f}"))) + .filterNot(f => f.startsWith("lmcoursier") || f.startsWith("META-INF")) + .sorted + notLmcoursierPackageClasses.foreach(println) + assert(notLmcoursierPackageClasses.isEmpty) + } + }, + Test / test := (Test / test).dependsOn(checkLmcoursierPackage).value, Utils.noPublish, assemblyShadeRules := { val namespacesToShade = Seq(