diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 5c43452c2..b585bf1d1 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -2438,7 +2438,7 @@ object Classpaths { csrConfiguration := LMCoursier.coursierConfigurationTask(false, false).value, csrResolvers := CoursierRepositoriesTasks.coursierResolversTask.value, csrRecursiveResolvers := CoursierRepositoriesTasks.coursierRecursiveResolversTask.value, - csrSbtResolvers := LMCoursier.coursierSbtResolversTask.value, + csrSbtResolvers := CoursierRepositoriesTasks.coursierSbtResolversTask.value, csrInterProjectDependencies := CoursierInputsTasks.coursierInterProjectDependenciesTask.value, csrFallbackDependencies := CoursierInputsTasks.coursierFallbackDependenciesTask.value, ) ++ diff --git a/main/src/main/scala/sbt/internal/LMCoursier.scala b/main/src/main/scala/sbt/internal/LMCoursier.scala index ab159b13e..47cdc85e8 100644 --- a/main/src/main/scala/sbt/internal/LMCoursier.scala +++ b/main/src/main/scala/sbt/internal/LMCoursier.scala @@ -89,37 +89,6 @@ private[sbt] object LMCoursier { } } - private val pluginIvySnapshotsBase = Resolver.SbtRepositoryRoot.stripSuffix("/") + "/ivy-snapshots" - - def coursierSbtResolversTask: Def.Initialize[sbt.Task[Seq[Resolver]]] = Def.task { - val resolvers = - sbt.Classpaths - .bootRepositories(appConfiguration.value) - .toSeq - .flatten ++ // required because of the hack above it seems - externalResolvers.in(updateSbtClassifiers).value - - val pluginIvySnapshotsFound = resolvers.exists { - case repo: URLRepository => - repo.patterns.artifactPatterns.headOption - .exists(_.startsWith(pluginIvySnapshotsBase)) - case _ => false - } - - val resolvers0 = - if (pluginIvySnapshotsFound && !resolvers.contains(Classpaths.sbtPluginReleases)) - resolvers :+ Classpaths.sbtPluginReleases - else - resolvers - val keepPreloaded = true // coursierKeepPreloaded.value - if (keepPreloaded) - resolvers0 - else - resolvers0.filter { r => - !r.name.startsWith("local-preloaded") - } - } - def publicationsSetting(packageConfigs: Seq[(Configuration, CConfiguration)]): Def.Setting[_] = { csrPublications := CoursierArtifactsTasks.coursierPublicationsTask(packageConfigs: _*).value } diff --git a/main/src/main/scala/sbt/internal/librarymanagement/CoursierRepositoriesTasks.scala b/main/src/main/scala/sbt/internal/librarymanagement/CoursierRepositoriesTasks.scala index 17c2e037e..1e4994311 100644 --- a/main/src/main/scala/sbt/internal/librarymanagement/CoursierRepositoriesTasks.scala +++ b/main/src/main/scala/sbt/internal/librarymanagement/CoursierRepositoriesTasks.scala @@ -74,6 +74,10 @@ private[sbt] object CoursierRepositoriesTasks { } } + // local-preloaded-ivy contains dangling ivy.xml without JAR files + // https://github.com/sbt/sbt/issues/4661 + private final val keepPreloaded = false // coursierKeepPreloaded.value + def coursierResolversTask: Def.Initialize[sbt.Task[Seq[Resolver]]] = Def.taskDyn { @@ -83,9 +87,6 @@ private[sbt] object CoursierRepositoriesTasks { Def.task { val result0 = resultTask(bootResOpt, overrideFlag).value val reorderResolvers = true // coursierReorderResolvers.value - // local-preloaded-ivy contains dangling ivy.xml without JAR files - // https://github.com/sbt/sbt/issues/4661 - val keepPreloaded = false // coursierKeepPreloaded.value val paths = ivyPaths.value val result1 = @@ -120,6 +121,36 @@ private[sbt] object CoursierRepositoriesTasks { } } + private val pluginIvySnapshotsBase = Resolver.SbtRepositoryRoot.stripSuffix("/") + "/ivy-snapshots" + + def coursierSbtResolversTask: Def.Initialize[sbt.Task[Seq[Resolver]]] = Def.task { + val resolvers = + sbt.Classpaths + .bootRepositories(appConfiguration.value) + .toSeq + .flatten ++ // required because of the hack above it seems + externalResolvers.in(updateSbtClassifiers).value + + val pluginIvySnapshotsFound = resolvers.exists { + case repo: URLRepository => + repo.patterns.artifactPatterns.headOption + .exists(_.startsWith(pluginIvySnapshotsBase)) + case _ => false + } + + val resolvers0 = + if (pluginIvySnapshotsFound && !resolvers.contains(Classpaths.sbtPluginReleases)) + resolvers :+ Classpaths.sbtPluginReleases + else + resolvers + if (keepPreloaded) + resolvers0 + else + resolvers0.filter { r => + !r.name.startsWith("local-preloaded") + } + } + def coursierRecursiveResolversTask: Def.Initialize[sbt.Task[Seq[Resolver]]] = Def.taskDyn { val s = state.value