From 0acb12a978f24c02af6b8058fe20c326815b65a6 Mon Sep 17 00:00:00 2001 From: Anatolii Kmetiuk Date: Wed, 10 Dec 2025 14:50:00 +0900 Subject: [PATCH] Fix #8405: updateSbtClassifiers includes plugins in dependencies list Preserve original direct dependencies (plugins) and merge with transitive dependencies Original dependencies may include plugins that are NOT transitive dependencies of sbt --- main/src/main/scala/sbt/internal/LibraryManagement.scala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/main/src/main/scala/sbt/internal/LibraryManagement.scala b/main/src/main/scala/sbt/internal/LibraryManagement.scala index e6e0ecbfa..41ffbf3f3 100644 --- a/main/src/main/scala/sbt/internal/LibraryManagement.scala +++ b/main/src/main/scala/sbt/internal/LibraryManagement.scala @@ -203,8 +203,12 @@ private[sbt] object LibraryManagement { case Left(w) => throw w.resolveException } + val key = (m: ModuleID) => (m.organization, m.name, m.revision) + val originalKeys = dependencies.map(key).toSet + val transitiveOnly = report.allModules.filterNot(m => originalKeys contains key(m)) + val mergedDependencies = dependencies ++ transitiveOnly val newConfig = config - .withModule(module.withDependencies(report.allModules)) + .withModule(module.withDependencies(mergedDependencies)) lm.updateClassifiers(newConfig, uwconfig, Vector(), log) }