diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index cef243bb4..8af12defd 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -268,9 +268,7 @@ object Defaults extends BuildCommon { csrMavenProfiles :== Set.empty, csrReconciliations :== LMCoursier.relaxedForAllModules, csrMavenDependencyOverride :== false, - csrSameVersions := Seq( - ScalaArtifacts.Artifacts.map(a => InclExclRule(scalaOrganization.value, a)).toSet - ), + csrSameVersions :== Nil, stagingDirectory := (ThisBuild / baseDirectory).value / "target" / "sona-staging", localStaging := Some(Resolver.file("local-staging", stagingDirectory.value)), sonaBundle := Publishing @@ -3245,6 +3243,21 @@ object Classpaths { (proj +: base).distinct } }).value, + csrSameVersions ++= { + partialVersion(scalaVersion.value) match { + // See https://github.com/sbt/sbt/issues/8224 + // Scala 3.8+ should align only Scala3_8Artifacts + case Some((3, minor)) if minor >= 8 => + ScalaArtifacts.Scala3_8Artifacts + .map(a => InclExclRule(scalaOrganization.value, a)) + .toSet :: Nil + case Some((major, minor)) if major == 2 || major == 3 => + ScalaArtifacts.Artifacts + .map(a => InclExclRule(scalaOrganization.value, a)) + .toSet :: Nil + case _ => Nil + } + }, moduleName := normalizedName.value, ivyPaths := IvyPaths(baseDirectory.value, bootIvyHome(appConfiguration.value)), csrCacheDirectory := { diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 6147eb617..aaedaaad5 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -14,7 +14,7 @@ object Dependencies { // sbt modules private val ioVersion = nightlyVersion.getOrElse("1.10.5") private val lmVersion = - sys.props.get("sbt.build.lm.version").orElse(nightlyVersion).getOrElse("1.11.3") + sys.props.get("sbt.build.lm.version").orElse(nightlyVersion).getOrElse("1.11.4") val zincVersion = nightlyVersion.getOrElse("1.10.8") private val sbtIO = "org.scala-sbt" %% "io" % ioVersion