From c8b9283a7495b8997649c7a95484b14e79c69ba2 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 11 Aug 2020 02:12:37 -0400 Subject: [PATCH] Delay the initialization of Coursier cache This attempts to delay the initialization of Coursier cache, such that it will not trigger Coursier directory related code if `ThisBuild / useCoursier` or `-Dsbt.coursier` is set to `false`. --- main/src/main/scala/sbt/Defaults.scala | 144 ++++++++++-------- main/src/main/scala/sbt/Project.scala | 2 +- .../main/scala/sbt/plugins/IvyPlugin.scala | 7 +- .../main/scala/sbt/plugins/JvmPlugin.scala | 8 +- .../dependency-management/artifact/build.sbt | 1 + .../cache-classifiers/multi.sbt | 1 + .../cache-local/cache.sbt | 1 + .../cache-resolver/cache.sbt | 11 +- .../cache-update/build.sbt | 5 +- .../changes/multi.sbt | 2 + .../cached-resolution-circular/multi.sbt | 2 + .../cached-resolution-classifier/multi.sbt | 2 + .../build.sbt | 2 + .../cached-resolution-conflicts/multi.sbt | 2 + .../cached-resolution-exclude/multi.sbt | 1 + .../cached-resolution-force/multi.sbt | 2 + .../cached-resolution-interproj/multi.sbt | 1 + .../cached-resolution-overrides/multi.sbt | 2 + .../chainresolver/build.sbt | 2 + .../circular-dependency/changes/multi.sbt | 1 + .../circular-dependency/multi.sbt | 2 + .../classifier/build.sbt | 1 + .../credentials/build.sbt | 1 + .../deliver-artifacts/build.sbt | 8 +- .../evicted-semver-spec/build.sbt | 2 +- .../exclude-transitive/build.sbt | 2 + .../exclude-transitive/test | 1 + .../extra/DefineColor.sbt | 2 + .../extra/changes/UseColor.sbt | 1 + .../dependency-management/force/build.sbt | 2 + .../dependency-management/info/build.sbt | 1 + .../inline-dependencies-a/build.sbt | 2 + .../metadata-only-resolver/build.sbt | 2 + .../module-confs/common.sbt | 2 + .../dependency-management/mvn-local/build.sbt | 2 + .../no-file-fails-publish/build.sbt | 2 + .../dependency-management/override/build.sbt | 2 + .../pom-advanced/build.sbt | 2 + .../pom-parent-pom/build.sbt | 1 + .../publish-local/build.sbt | 2 + .../publish-local/changes/RetrieveTest.sbt | 2 + .../snapshot-local/build.sbt | 1 + .../snapshot-resolution/build.sbt | 1 + .../dependency-management/t468/build.sbt | 2 + .../test-artifact/cache.sbt | 1 + .../dependency-management/url/build.sbt | 2 + .../build.sbt | 2 + .../generated-root-no-publish/build.sbt | 2 + .../changes/bare.sbt | 2 + .../project/transitive-plugins/build.sbt | 1 + 50 files changed, 176 insertions(+), 79 deletions(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 2f9a4498b..881d24c44 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -193,59 +193,6 @@ object Defaults extends BuildCommon { }, extraIncOptions :== Seq("JAVA_CLASS_VERSION" -> sys.props("java.class.version")), allowMachinePath :== true, - rootPaths := { - val app = appConfiguration.value - val base = app.baseDirectory.getCanonicalFile - val boot = app.provider.scalaProvider.launcher.bootDirectory - val ih = app.provider.scalaProvider.launcher.ivyHome - val coursierCache = csrCacheDirectory.value - val javaHome = Paths.get(sys.props("java.home")) - Map( - "BASE" -> base.toPath, - "SBT_BOOT" -> boot.toPath, - "CSR_CACHE" -> coursierCache.toPath, - "IVY_HOME" -> ih.toPath, - "JAVA_HOME" -> javaHome, - ) - }, - fileConverter := MappedFileConverter(rootPaths.value, allowMachinePath.value), - fullServerHandlers := { - Seq( - LanguageServerProtocol.handler(fileConverter.value), - BuildServerProtocol - .handler(sbtVersion.value, semanticdbEnabled.value, semanticdbVersion.value), - VirtualTerminal.handler, - ) ++ serverHandlers.value :+ ServerHandler.fallback - }, - timeWrappedStamper := Stamps - .timeWrapBinaryStamps(Stamps.uncachedStamps(fileConverter.value), fileConverter.value), - reusableStamper := { - val converter = fileConverter.value - val unmanagedCache = unmanagedFileStampCache.value - val managedCache = managedFileStampCache.value - val backing = timeWrappedStamper.value - new xsbti.compile.analysis.ReadStamps { - def getAllLibraryStamps() - : java.util.Map[xsbti.VirtualFileRef, xsbti.compile.analysis.Stamp] = - backing.getAllLibraryStamps() - def getAllProductStamps() - : java.util.Map[xsbti.VirtualFileRef, xsbti.compile.analysis.Stamp] = - backing.getAllProductStamps() - def getAllSourceStamps() - : java.util.Map[xsbti.VirtualFileRef, xsbti.compile.analysis.Stamp] = - new java.util.HashMap[xsbti.VirtualFileRef, xsbti.compile.analysis.Stamp] - def library(fr: xsbti.VirtualFileRef): xsbti.compile.analysis.Stamp = backing.library(fr) - def product(fr: xsbti.VirtualFileRef): xsbti.compile.analysis.Stamp = backing.product(fr) - def source(fr: xsbti.VirtualFile): xsbti.compile.analysis.Stamp = { - val path = converter.toPath(fr) - unmanagedCache - .get(path) - .orElse(managedCache.getOrElseUpdate(path, sbt.nio.FileStamper.Hash)) - .map(_.stamp) - .getOrElse(backing.source(fr)) - } - } - }, traceLevel in run :== 0, traceLevel in runMain :== 0, traceLevel in bgRun :== 0, @@ -323,7 +270,6 @@ object Defaults extends BuildCommon { // coursier settings csrExtraCredentials :== Nil, csrLogger := LMCoursier.coursierLoggerTask.value, - csrCacheDirectory :== LMCoursier.defaultCacheLocation, csrMavenProfiles :== Set.empty, csrReconciliations :== LMCoursier.relaxedForAllModules, ) @@ -450,6 +396,70 @@ object Defaults extends BuildCommon { ++ RemoteCache.globalSettings ) + private[sbt] lazy val buildLevelJvmSettings: Seq[Setting[_]] = Seq( + rootPaths := { + val app = appConfiguration.value + val base = app.baseDirectory.getCanonicalFile + val boot = app.provider.scalaProvider.launcher.bootDirectory + val ih = app.provider.scalaProvider.launcher.ivyHome + val coursierCache = csrCacheDirectory.value + val javaHome = Paths.get(sys.props("java.home")) + Map( + "BASE" -> base.toPath, + "SBT_BOOT" -> boot.toPath, + "CSR_CACHE" -> coursierCache.toPath, + "IVY_HOME" -> ih.toPath, + "JAVA_HOME" -> javaHome, + ) + }, + fileConverter := MappedFileConverter(rootPaths.value, allowMachinePath.value), + fullServerHandlers := { + Seq( + LanguageServerProtocol.handler(fileConverter.value), + BuildServerProtocol + .handler(sbtVersion.value, semanticdbEnabled.value, semanticdbVersion.value), + VirtualTerminal.handler, + ) ++ serverHandlers.value :+ ServerHandler.fallback + }, + timeWrappedStamper := Stamps + .timeWrapBinaryStamps(Stamps.uncachedStamps(fileConverter.value), fileConverter.value), + reusableStamper := { + val converter = fileConverter.value + val unmanagedCache = unmanagedFileStampCache.value + val managedCache = managedFileStampCache.value + val backing = timeWrappedStamper.value + new xsbti.compile.analysis.ReadStamps { + def getAllLibraryStamps() + : java.util.Map[xsbti.VirtualFileRef, xsbti.compile.analysis.Stamp] = + backing.getAllLibraryStamps() + def getAllProductStamps() + : java.util.Map[xsbti.VirtualFileRef, xsbti.compile.analysis.Stamp] = + backing.getAllProductStamps() + def getAllSourceStamps() + : java.util.Map[xsbti.VirtualFileRef, xsbti.compile.analysis.Stamp] = + new java.util.HashMap[xsbti.VirtualFileRef, xsbti.compile.analysis.Stamp] + def library(fr: xsbti.VirtualFileRef): xsbti.compile.analysis.Stamp = backing.library(fr) + def product(fr: xsbti.VirtualFileRef): xsbti.compile.analysis.Stamp = backing.product(fr) + def source(fr: xsbti.VirtualFile): xsbti.compile.analysis.Stamp = { + val path = converter.toPath(fr) + unmanagedCache + .get(path) + .orElse(managedCache.getOrElseUpdate(path, sbt.nio.FileStamper.Hash)) + .map(_.stamp) + .getOrElse(backing.source(fr)) + } + } + }, + ) + + // csrCacheDirectory is scoped to ThisBuild to allow customization. + private[sbt] lazy val buildLevelIvySettings: Seq[Setting[_]] = Seq( + csrCacheDirectory := { + if (useCoursier.value) LMCoursier.defaultCacheLocation + else Classpaths.dummyCoursierDirectory(appConfiguration.value) + }, + ) + def defaultTestTasks(key: Scoped): Seq[Setting[_]] = inTask(key)( Seq( @@ -2618,15 +2628,19 @@ object Classpaths { ivyPaths := IvyPaths(baseDirectory.value, bootIvyHome(appConfiguration.value)), csrCacheDirectory := { val old = csrCacheDirectory.value + val ac = appConfiguration.value val ip = ivyPaths.value - val defaultIvyCache = bootIvyHome(appConfiguration.value) - if (old != LMCoursier.defaultCacheLocation) old - else if (ip.ivyHome == defaultIvyCache) old - else - ip.ivyHome match { - case Some(home) => home / "coursier-cache" - case _ => old - } + // if ivyPaths is customized, create coursier-cache directory in it + if (useCoursier.value) { + val defaultIvyCache = bootIvyHome(ac) + if (old != LMCoursier.defaultCacheLocation) old + else if (ip.ivyHome == defaultIvyCache) old + else + ip.ivyHome match { + case Some(home) => home / "coursier-cache" + case _ => old + } + } else Classpaths.dummyCoursierDirectory(ac) }, dependencyCacheDirectory := { val st = state.value @@ -3747,6 +3761,12 @@ object Classpaths { case _: NoSuchMethodError => None } + // This is a place holder in case someone doesn't want to use Coursier + private[sbt] def dummyCoursierDirectory(app: xsbti.AppConfiguration): File = { + val base = app.baseDirectory.getCanonicalFile + base / "target" / "coursier-temp" + } + private[this] def mavenCompatible(ivyRepo: xsbti.IvyRepository): Boolean = try { ivyRepo.mavenCompatible diff --git a/main/src/main/scala/sbt/Project.scala b/main/src/main/scala/sbt/Project.scala index 80f4ab595..914cb5bc7 100755 --- a/main/src/main/scala/sbt/Project.scala +++ b/main/src/main/scala/sbt/Project.scala @@ -521,7 +521,7 @@ object Project extends ProjectExtra { val authentication: Option[Set[ServerAuthentication]] = get(serverAuthentication) val connectionType: Option[ConnectionType] = get(serverConnectionType) val srvLogLevel: Option[Level.Value] = (logLevel in (ref, serverLog)).get(structure.data) - val hs: Option[Seq[ServerHandler]] = get(fullServerHandlers) + val hs: Option[Seq[ServerHandler]] = get(fullServerHandlers in ThisBuild) val commandDefs = allCommands.distinct.flatten[Command].map(_ tag (projectCommand, true)) val newDefinedCommands = commandDefs ++ BasicCommands.removeTagged( s.definedCommands, diff --git a/main/src/main/scala/sbt/plugins/IvyPlugin.scala b/main/src/main/scala/sbt/plugins/IvyPlugin.scala index 01c20cdac..97a7a1371 100644 --- a/main/src/main/scala/sbt/plugins/IvyPlugin.scala +++ b/main/src/main/scala/sbt/plugins/IvyPlugin.scala @@ -26,8 +26,11 @@ object IvyPlugin extends AutoPlugin { override def requires = CorePlugin override def trigger = allRequirements - override lazy val projectSettings: Seq[Setting[_]] = - Classpaths.ivyPublishSettings ++ Classpaths.ivyBaseSettings override lazy val globalSettings: Seq[Setting[_]] = Defaults.globalIvyCore + override lazy val buildSettings: Seq[Setting[_]] = + Defaults.buildLevelIvySettings + override lazy val projectSettings: Seq[Setting[_]] = + Classpaths.ivyPublishSettings ++ Classpaths.ivyBaseSettings + } diff --git a/main/src/main/scala/sbt/plugins/JvmPlugin.scala b/main/src/main/scala/sbt/plugins/JvmPlugin.scala index d51355573..be930f5e5 100644 --- a/main/src/main/scala/sbt/plugins/JvmPlugin.scala +++ b/main/src/main/scala/sbt/plugins/JvmPlugin.scala @@ -30,6 +30,12 @@ object JvmPlugin extends AutoPlugin { override def requires = IvyPlugin override def trigger = allRequirements + override lazy val globalSettings: Seq[Setting[_]] = + Defaults.globalJvmCore + + override lazy val buildSettings: Seq[Setting[_]] = + Defaults.buildLevelJvmSettings + override lazy val projectSettings: Seq[Setting[_]] = Defaults.runnerSettings ++ Defaults.paths ++ @@ -38,8 +44,6 @@ object JvmPlugin extends AutoPlugin { Defaults.baseTasks ++ Defaults.compileBase ++ Defaults.defaultConfigs - override lazy val globalSettings: Seq[Setting[_]] = - Defaults.globalJvmCore override def projectConfigurations: Seq[Configuration] = Configurations.default diff --git a/sbt/src/sbt-test/dependency-management/artifact/build.sbt b/sbt/src/sbt-test/dependency-management/artifact/build.sbt index 6db89748d..8dbd1a392 100644 --- a/sbt/src/sbt-test/dependency-management/artifact/build.sbt +++ b/sbt/src/sbt-test/dependency-management/artifact/build.sbt @@ -9,6 +9,7 @@ ThisBuild / scalaVersion := "2.12.11" ThisBuild / version := "0.1.0-SNAPSHOT" ThisBuild / organization := "com.example" ThisBuild / organizationName := "example" +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" lazy val Dev = config("dev").extend(Compile) .describedAs("Dependencies required for development environments") diff --git a/sbt/src/sbt-test/dependency-management/cache-classifiers/multi.sbt b/sbt/src/sbt-test/dependency-management/cache-classifiers/multi.sbt index 30195aa96..7a7df7179 100644 --- a/sbt/src/sbt-test/dependency-management/cache-classifiers/multi.sbt +++ b/sbt/src/sbt-test/dependency-management/cache-classifiers/multi.sbt @@ -2,6 +2,7 @@ ThisBuild / scalaVersion := "2.12.11" // TTL of Coursier is 24h ThisBuild / useCoursier := false +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" def localCache = ivyPaths := IvyPaths(baseDirectory.value, Some((baseDirectory in ThisBuild).value / "ivy" / "cache")) diff --git a/sbt/src/sbt-test/dependency-management/cache-local/cache.sbt b/sbt/src/sbt-test/dependency-management/cache-local/cache.sbt index 869c6d489..0623e2bce 100644 --- a/sbt/src/sbt-test/dependency-management/cache-local/cache.sbt +++ b/sbt/src/sbt-test/dependency-management/cache-local/cache.sbt @@ -1 +1,2 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" ivyPaths := { IvyPaths(baseDirectory.value, Some(target.value / ".ivy2")) } diff --git a/sbt/src/sbt-test/dependency-management/cache-resolver/cache.sbt b/sbt/src/sbt-test/dependency-management/cache-resolver/cache.sbt index efa616eac..699a01ea0 100644 --- a/sbt/src/sbt-test/dependency-management/cache-resolver/cache.sbt +++ b/sbt/src/sbt-test/dependency-management/cache-resolver/cache.sbt @@ -1,7 +1,8 @@ -ivyPaths in ThisBuild := { - val base = (baseDirectory in ThisBuild).value +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" +ThisBuild / ivyPaths := { + val base = (ThisBuild / baseDirectory).value IvyPaths(base, Some(base / "ivy-cache")) } -managedScalaInstance in ThisBuild := false -autoScalaLibrary in ThisBuild := false -crossPaths in ThisBuild := false +ThisBuild / managedScalaInstance := false +ThisBuild / autoScalaLibrary := false +ThisBuild / crossPaths := false diff --git a/sbt/src/sbt-test/dependency-management/cache-update/build.sbt b/sbt/src/sbt-test/dependency-management/cache-update/build.sbt index b12fb7e29..47d24a502 100644 --- a/sbt/src/sbt-test/dependency-management/cache-update/build.sbt +++ b/sbt/src/sbt-test/dependency-management/cache-update/build.sbt @@ -1,5 +1,6 @@ -scalaVersion in ThisBuild := "2.10.4" -dependencyOverrides in ThisBuild += "com.github.nscala-time" %% "nscala-time" % "1.0.0" +ThisBuild / scalaVersion := "2.10.4" +ThisBuild / dependencyOverrides += "com.github.nscala-time" %% "nscala-time" % "1.0.0" +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" lazy val root = (project in file(".")) .dependsOn(p1 % Compile) diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-circular/changes/multi.sbt b/sbt/src/sbt-test/dependency-management/cached-resolution-circular/changes/multi.sbt index c82c5e983..8b81f831e 100644 --- a/sbt/src/sbt-test/dependency-management/cached-resolution-circular/changes/multi.sbt +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-circular/changes/multi.sbt @@ -6,6 +6,8 @@ val summingbirdVersion = "0.4.0" val luceneVersion = "4.0.0" val akkaVersion = "2.3.1" +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + def commonSettings: Seq[Def.Setting[_]] = Seq( ivyPaths := IvyPaths( (baseDirectory in ThisBuild).value, Some((target in LocalRootProject).value / "ivy-cache")), diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-circular/multi.sbt b/sbt/src/sbt-test/dependency-management/cached-resolution-circular/multi.sbt index b1180c1af..acd0593cf 100644 --- a/sbt/src/sbt-test/dependency-management/cached-resolution-circular/multi.sbt +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-circular/multi.sbt @@ -6,6 +6,8 @@ val summingbirdVersion = "0.4.0" val luceneVersion = "4.0.0" val akkaVersion = "2.3.1" +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + def commonSettings: Seq[Def.Setting[_]] = Seq( ivyPaths := IvyPaths( (baseDirectory in ThisBuild).value, Some((target in LocalRootProject).value / "ivy-cache")), diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-classifier/multi.sbt b/sbt/src/sbt-test/dependency-management/cached-resolution-classifier/multi.sbt index e3057754e..228ce4926 100644 --- a/sbt/src/sbt-test/dependency-management/cached-resolution-classifier/multi.sbt +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-classifier/multi.sbt @@ -2,6 +2,8 @@ ThisBuild / useCoursier := false lazy val check = taskKey[Unit]("Runs the check") +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + def commonSettings: Seq[Def.Setting[_]] = Seq( ivyPaths := IvyPaths( (baseDirectory in ThisBuild).value, Some((baseDirectory in LocalRootProject).value / "ivy-cache")), diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/build.sbt b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/build.sbt index aac69610f..d52b9e114 100644 --- a/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/build.sbt +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/build.sbt @@ -1,3 +1,5 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + def commonSettings: Vector[Def.Setting[_]] = Vector( organization := "com.example", diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-conflicts/multi.sbt b/sbt/src/sbt-test/dependency-management/cached-resolution-conflicts/multi.sbt index 44b759549..914681915 100644 --- a/sbt/src/sbt-test/dependency-management/cached-resolution-conflicts/multi.sbt +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-conflicts/multi.sbt @@ -1,6 +1,8 @@ // https://github.com/sbt/sbt/issues/1710 // https://github.com/sbt/sbt/issues/1760 +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + inThisBuild(Seq( organization := "com.example", version := "0.1.0", diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-exclude/multi.sbt b/sbt/src/sbt-test/dependency-management/cached-resolution-exclude/multi.sbt index 05659cdf1..cf58ed44a 100644 --- a/sbt/src/sbt-test/dependency-management/cached-resolution-exclude/multi.sbt +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-exclude/multi.sbt @@ -2,6 +2,7 @@ lazy val check = taskKey[Unit]("Runs the check") ThisBuild / useCoursier := false +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" def commonSettings: Seq[Def.Setting[_]] = Seq( diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-force/multi.sbt b/sbt/src/sbt-test/dependency-management/cached-resolution-force/multi.sbt index 9dadb336f..2d6a9f93a 100644 --- a/sbt/src/sbt-test/dependency-management/cached-resolution-force/multi.sbt +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-force/multi.sbt @@ -1,5 +1,7 @@ lazy val check = taskKey[Unit]("Runs the check") +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + def commonSettings: Seq[Def.Setting[_]] = Seq( ivyPaths := IvyPaths( (baseDirectory in ThisBuild).value, Some((baseDirectory in LocalRootProject).value / "ivy-cache")), diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-interproj/multi.sbt b/sbt/src/sbt-test/dependency-management/cached-resolution-interproj/multi.sbt index 531c1a617..9168c6937 100644 --- a/sbt/src/sbt-test/dependency-management/cached-resolution-interproj/multi.sbt +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-interproj/multi.sbt @@ -4,6 +4,7 @@ val scalatest = "org.scalatest" %% "scalatest" % "3.0.5" val junit = "junit" % "junit" % "4.11" ThisBuild / scalaVersion := "2.12.11" +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" def commonSettings: Seq[Def.Setting[_]] = Seq( diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-overrides/multi.sbt b/sbt/src/sbt-test/dependency-management/cached-resolution-overrides/multi.sbt index 22f1fb673..b452de8f3 100644 --- a/sbt/src/sbt-test/dependency-management/cached-resolution-overrides/multi.sbt +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-overrides/multi.sbt @@ -1,5 +1,7 @@ lazy val check = taskKey[Unit]("Runs the check") +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + def commonSettings: Seq[Def.Setting[_]] = Seq( ivyPaths := IvyPaths( (baseDirectory in ThisBuild).value, Some((baseDirectory in LocalRootProject).value / "ivy-cache")), diff --git a/sbt/src/sbt-test/dependency-management/chainresolver/build.sbt b/sbt/src/sbt-test/dependency-management/chainresolver/build.sbt index 8906939b2..1f60e00b8 100644 --- a/sbt/src/sbt-test/dependency-management/chainresolver/build.sbt +++ b/sbt/src/sbt-test/dependency-management/chainresolver/build.sbt @@ -1,5 +1,7 @@ lazy val check = taskKey[Unit]("Runs the check") +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + def commonSettings: Seq[Def.Setting[_]] = Seq( ivyPaths := IvyPaths( (baseDirectory in ThisBuild).value, Some((target in LocalRootProject).value / "ivy-cache")), diff --git a/sbt/src/sbt-test/dependency-management/circular-dependency/changes/multi.sbt b/sbt/src/sbt-test/dependency-management/circular-dependency/changes/multi.sbt index ce0d2665f..6fc574134 100644 --- a/sbt/src/sbt-test/dependency-management/circular-dependency/changes/multi.sbt +++ b/sbt/src/sbt-test/dependency-management/circular-dependency/changes/multi.sbt @@ -1,4 +1,5 @@ ThisBuild / useCoursier := false +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" lazy val check = taskKey[Unit]("Runs the check") diff --git a/sbt/src/sbt-test/dependency-management/circular-dependency/multi.sbt b/sbt/src/sbt-test/dependency-management/circular-dependency/multi.sbt index c82036455..632ea2264 100644 --- a/sbt/src/sbt-test/dependency-management/circular-dependency/multi.sbt +++ b/sbt/src/sbt-test/dependency-management/circular-dependency/multi.sbt @@ -1,5 +1,7 @@ lazy val check = taskKey[Unit]("Runs the check") +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + def commonSettings: Seq[Def.Setting[_]] = Seq( ivyPaths := IvyPaths( (baseDirectory in ThisBuild).value, Some((target in LocalRootProject).value / "ivy-cache")), diff --git a/sbt/src/sbt-test/dependency-management/classifier/build.sbt b/sbt/src/sbt-test/dependency-management/classifier/build.sbt index 2985b05e9..f82acfadb 100644 --- a/sbt/src/sbt-test/dependency-management/classifier/build.sbt +++ b/sbt/src/sbt-test/dependency-management/classifier/build.sbt @@ -1,3 +1,4 @@ ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")) +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" libraryDependencies += "org.testng" % "testng" % "5.7" classifier "jdk15" diff --git a/sbt/src/sbt-test/dependency-management/credentials/build.sbt b/sbt/src/sbt-test/dependency-management/credentials/build.sbt index 5ba36e191..81394881e 100644 --- a/sbt/src/sbt-test/dependency-management/credentials/build.sbt +++ b/sbt/src/sbt-test/dependency-management/credentials/build.sbt @@ -1,4 +1,5 @@ ThisBuild / scalaVersion := "2.13.0" +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")) // don't blow up when credential file doesn't exist diff --git a/sbt/src/sbt-test/dependency-management/deliver-artifacts/build.sbt b/sbt/src/sbt-test/dependency-management/deliver-artifacts/build.sbt index ce31b9ac0..69da3bd1a 100644 --- a/sbt/src/sbt-test/dependency-management/deliver-artifacts/build.sbt +++ b/sbt/src/sbt-test/dependency-management/deliver-artifacts/build.sbt @@ -1,3 +1,7 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" +ThisBuild / organization := "org.example" +ThisBuild / version := "1.0" + lazy val a = project.settings(common: _*).settings( // verifies that a can be published as an ivy.xml file and preserve the extra artifact information, // such as a classifier @@ -10,10 +14,6 @@ lazy val b = project.settings(common: _*).settings( libraryDependencies := Seq(organization.value %% "a" % version.value) ) -organization in ThisBuild := "org.example" - -version in ThisBuild := "1.0" - lazy val common = Seq( autoScalaLibrary := false, // avoid downloading fresh scala-library/scala-compiler managedScalaInstance := false, diff --git a/sbt/src/sbt-test/dependency-management/evicted-semver-spec/build.sbt b/sbt/src/sbt-test/dependency-management/evicted-semver-spec/build.sbt index d8824283f..6959e5358 100644 --- a/sbt/src/sbt-test/dependency-management/evicted-semver-spec/build.sbt +++ b/sbt/src/sbt-test/dependency-management/evicted-semver-spec/build.sbt @@ -2,6 +2,7 @@ ThisBuild / organization := "com.example" ThisBuild / scalaVersion := "2.12.11" ThisBuild / versionScheme := Some("semver-spec") +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" def commonSettings: Seq[Def.Setting[_]] = Seq( @@ -9,7 +10,6 @@ def commonSettings: Seq[Def.Setting[_]] = (ThisBuild / baseDirectory).value, Some((LocalRootProject / target).value / "ivy-cache") ), - csrCacheDirectory := (LocalRootProject / target).value / "cache", fullResolvers := fullResolvers.value.filterNot(_.name == "inter-project"), publishTo := Some(MavenCache("local-maven", (LocalRootProject / target).value / "local-maven")), resolvers += MavenCache("local-maven", (LocalRootProject / target).value / "local-maven"), diff --git a/sbt/src/sbt-test/dependency-management/exclude-transitive/build.sbt b/sbt/src/sbt-test/dependency-management/exclude-transitive/build.sbt index ee109ae7d..cd6c3ec92 100644 --- a/sbt/src/sbt-test/dependency-management/exclude-transitive/build.sbt +++ b/sbt/src/sbt-test/dependency-management/exclude-transitive/build.sbt @@ -1,3 +1,5 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + lazy val root = (project in file(".")). settings( ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")), diff --git a/sbt/src/sbt-test/dependency-management/exclude-transitive/test b/sbt/src/sbt-test/dependency-management/exclude-transitive/test index 6204908fb..6a468595d 100644 --- a/sbt/src/sbt-test/dependency-management/exclude-transitive/test +++ b/sbt/src/sbt-test/dependency-management/exclude-transitive/test @@ -14,6 +14,7 @@ $ touch transitive # load the project definition with transitive dependencies disabled # and check that they are not downloaded +$ delete coursier-cache $ delete ivy-cache $ delete transitive > reload diff --git a/sbt/src/sbt-test/dependency-management/extra/DefineColor.sbt b/sbt/src/sbt-test/dependency-management/extra/DefineColor.sbt index 934dc7bf7..bd3c981bc 100644 --- a/sbt/src/sbt-test/dependency-management/extra/DefineColor.sbt +++ b/sbt/src/sbt-test/dependency-management/extra/DefineColor.sbt @@ -1,3 +1,5 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + lazy val root = (project in file(".")) .settings( organization := "com.example", diff --git a/sbt/src/sbt-test/dependency-management/extra/changes/UseColor.sbt b/sbt/src/sbt-test/dependency-management/extra/changes/UseColor.sbt index 2fc37decd..f77e05981 100644 --- a/sbt/src/sbt-test/dependency-management/extra/changes/UseColor.sbt +++ b/sbt/src/sbt-test/dependency-management/extra/changes/UseColor.sbt @@ -1,4 +1,5 @@ ThisBuild / useCoursier := false +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" lazy val root = (project in file(".")) .settings( diff --git a/sbt/src/sbt-test/dependency-management/force/build.sbt b/sbt/src/sbt-test/dependency-management/force/build.sbt index 444fe9742..2a8a64b04 100644 --- a/sbt/src/sbt-test/dependency-management/force/build.sbt +++ b/sbt/src/sbt-test/dependency-management/force/build.sbt @@ -1,3 +1,5 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + lazy val root = (project in file(".")). settings( ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")), diff --git a/sbt/src/sbt-test/dependency-management/info/build.sbt b/sbt/src/sbt-test/dependency-management/info/build.sbt index 899b8184d..5ae25bd00 100644 --- a/sbt/src/sbt-test/dependency-management/info/build.sbt +++ b/sbt/src/sbt-test/dependency-management/info/build.sbt @@ -1,4 +1,5 @@ ThisBuild / useCoursier := false +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" import scala.xml._ diff --git a/sbt/src/sbt-test/dependency-management/inline-dependencies-a/build.sbt b/sbt/src/sbt-test/dependency-management/inline-dependencies-a/build.sbt index 3113ef2ca..fb1c5ca87 100644 --- a/sbt/src/sbt-test/dependency-management/inline-dependencies-a/build.sbt +++ b/sbt/src/sbt-test/dependency-management/inline-dependencies-a/build.sbt @@ -1,3 +1,5 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + libraryDependencies += "org.scalacheck" % "scalacheck" % "1.5" ivyPaths := baseDirectory( dir => IvyPaths(dir, Some(dir / "ivy-home"))).value diff --git a/sbt/src/sbt-test/dependency-management/metadata-only-resolver/build.sbt b/sbt/src/sbt-test/dependency-management/metadata-only-resolver/build.sbt index f01f2cb94..b3d5e6d75 100644 --- a/sbt/src/sbt-test/dependency-management/metadata-only-resolver/build.sbt +++ b/sbt/src/sbt-test/dependency-management/metadata-only-resolver/build.sbt @@ -1,3 +1,5 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / ".ivy2")) // not in the default repositories diff --git a/sbt/src/sbt-test/dependency-management/module-confs/common.sbt b/sbt/src/sbt-test/dependency-management/module-confs/common.sbt index e11b2fd32..42eea6e28 100644 --- a/sbt/src/sbt-test/dependency-management/module-confs/common.sbt +++ b/sbt/src/sbt-test/dependency-management/module-confs/common.sbt @@ -1,3 +1,5 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + ivyScala ~= { (is: Option[IvyScala]) => is.map(_.copy(checkExplicit = false, overrideScalaVersion = false, filterImplicit = false)) } ivyPaths := baseDirectory( dir => IvyPaths(dir, Some(dir / "ivy-home"))).value diff --git a/sbt/src/sbt-test/dependency-management/mvn-local/build.sbt b/sbt/src/sbt-test/dependency-management/mvn-local/build.sbt index 810bf1d79..914cd1837 100644 --- a/sbt/src/sbt-test/dependency-management/mvn-local/build.sbt +++ b/sbt/src/sbt-test/dependency-management/mvn-local/build.sbt @@ -1,3 +1,5 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + def commonSettings: Seq[Def.Setting[_]] = Seq( ivyPaths := IvyPaths( (baseDirectory in ThisBuild).value, Some((baseDirectory in LocalRootProject).value / "ivy-cache")), diff --git a/sbt/src/sbt-test/dependency-management/no-file-fails-publish/build.sbt b/sbt/src/sbt-test/dependency-management/no-file-fails-publish/build.sbt index c9096aeea..f02e86fd9 100644 --- a/sbt/src/sbt-test/dependency-management/no-file-fails-publish/build.sbt +++ b/sbt/src/sbt-test/dependency-management/no-file-fails-publish/build.sbt @@ -1,3 +1,5 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")) organization := "org.example" diff --git a/sbt/src/sbt-test/dependency-management/override/build.sbt b/sbt/src/sbt-test/dependency-management/override/build.sbt index b3def6c87..0508fa0d7 100644 --- a/sbt/src/sbt-test/dependency-management/override/build.sbt +++ b/sbt/src/sbt-test/dependency-management/override/build.sbt @@ -1,3 +1,5 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + autoScalaLibrary := false ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")) diff --git a/sbt/src/sbt-test/dependency-management/pom-advanced/build.sbt b/sbt/src/sbt-test/dependency-management/pom-advanced/build.sbt index 0f305b07d..0fd69fb42 100644 --- a/sbt/src/sbt-test/dependency-management/pom-advanced/build.sbt +++ b/sbt/src/sbt-test/dependency-management/pom-advanced/build.sbt @@ -1,5 +1,7 @@ import complete.DefaultParsers._ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + lazy val root = (project in file(".")). settings( resolvers ++= Seq(local, Resolver.sonatypeRepo("releases"), Resolver.sonatypeRepo("snapshots")), diff --git a/sbt/src/sbt-test/dependency-management/pom-parent-pom/build.sbt b/sbt/src/sbt-test/dependency-management/pom-parent-pom/build.sbt index fa8e4369f..32ba36863 100644 --- a/sbt/src/sbt-test/dependency-management/pom-parent-pom/build.sbt +++ b/sbt/src/sbt-test/dependency-management/pom-parent-pom/build.sbt @@ -1,4 +1,5 @@ ThisBuild / useCoursier := false +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" val checkIvyXml = taskKey[Unit]("Checks the ivy.xml transform was correct") diff --git a/sbt/src/sbt-test/dependency-management/publish-local/build.sbt b/sbt/src/sbt-test/dependency-management/publish-local/build.sbt index 261aa6ac3..8076f5a1b 100644 --- a/sbt/src/sbt-test/dependency-management/publish-local/build.sbt +++ b/sbt/src/sbt-test/dependency-management/publish-local/build.sbt @@ -1,3 +1,5 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + lazy val root = (project in file(".")). dependsOn(sub). aggregate(sub). diff --git a/sbt/src/sbt-test/dependency-management/publish-local/changes/RetrieveTest.sbt b/sbt/src/sbt-test/dependency-management/publish-local/changes/RetrieveTest.sbt index 795608334..c7ee8cd16 100644 --- a/sbt/src/sbt-test/dependency-management/publish-local/changes/RetrieveTest.sbt +++ b/sbt/src/sbt-test/dependency-management/publish-local/changes/RetrieveTest.sbt @@ -1,3 +1,5 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + lazy val root = (project in file(".")). settings(inThisBuild(List( organization := "A", diff --git a/sbt/src/sbt-test/dependency-management/snapshot-local/build.sbt b/sbt/src/sbt-test/dependency-management/snapshot-local/build.sbt index 7eb00dad5..37ad4f715 100644 --- a/sbt/src/sbt-test/dependency-management/snapshot-local/build.sbt +++ b/sbt/src/sbt-test/dependency-management/snapshot-local/build.sbt @@ -1,5 +1,6 @@ ThisBuild / organization := "com.example" ThisBuild / scalaVersion := "2.12.11" +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" def customIvyPaths: Seq[Def.Setting[_]] = Seq( ivyPaths := IvyPaths((baseDirectory in ThisBuild).value, Some((baseDirectory in ThisBuild).value / "ivy-cache")) diff --git a/sbt/src/sbt-test/dependency-management/snapshot-resolution/build.sbt b/sbt/src/sbt-test/dependency-management/snapshot-resolution/build.sbt index 88d29c533..95b37fbe8 100644 --- a/sbt/src/sbt-test/dependency-management/snapshot-resolution/build.sbt +++ b/sbt/src/sbt-test/dependency-management/snapshot-resolution/build.sbt @@ -3,6 +3,7 @@ ThisBuild / scalaVersion := "2.12.11" // TTL is 24h so we can't detect the change ThisBuild / useCoursier := false +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" def customIvyPaths: Seq[Def.Setting[_]] = Seq( ivyPaths := IvyPaths((baseDirectory in ThisBuild).value, Some((baseDirectory in ThisBuild).value / "ivy-cache")) diff --git a/sbt/src/sbt-test/dependency-management/t468/build.sbt b/sbt/src/sbt-test/dependency-management/t468/build.sbt index 98d1f226e..bec54f66b 100644 --- a/sbt/src/sbt-test/dependency-management/t468/build.sbt +++ b/sbt/src/sbt-test/dependency-management/t468/build.sbt @@ -1,3 +1,5 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + autoScalaLibrary := false ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")) diff --git a/sbt/src/sbt-test/dependency-management/test-artifact/cache.sbt b/sbt/src/sbt-test/dependency-management/test-artifact/cache.sbt index f6fe7926d..312d66e8d 100644 --- a/sbt/src/sbt-test/dependency-management/test-artifact/cache.sbt +++ b/sbt/src/sbt-test/dependency-management/test-artifact/cache.sbt @@ -1,4 +1,5 @@ ThisBuild / useCoursier := false +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" ivyPaths := { val base = baseDirectory.value diff --git a/sbt/src/sbt-test/dependency-management/url/build.sbt b/sbt/src/sbt-test/dependency-management/url/build.sbt index 1170270b3..54ae274cf 100644 --- a/sbt/src/sbt-test/dependency-management/url/build.sbt +++ b/sbt/src/sbt-test/dependency-management/url/build.sbt @@ -1,5 +1,7 @@ import sbt.internal.inc.classpath.ClasspathUtilities +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + lazy val root = (project in file(".")). settings( ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")), diff --git a/sbt/src/sbt-test/ivy-deps-management/update-classifiers-snapshot-srcs/build.sbt b/sbt/src/sbt-test/ivy-deps-management/update-classifiers-snapshot-srcs/build.sbt index bf26b5457..64ad6b758 100644 --- a/sbt/src/sbt-test/ivy-deps-management/update-classifiers-snapshot-srcs/build.sbt +++ b/sbt/src/sbt-test/ivy-deps-management/update-classifiers-snapshot-srcs/build.sbt @@ -1,6 +1,8 @@ def ivyHome = Def.setting((target in LocalRootProject).value / "ivy") def localRepo = Def.setting((target in LocalRootProject).value / "local-repo") +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + val commonSettings = Seq[Def.Setting[_]]( organization := "org.example", version := "1.0-SNAPSHOT", diff --git a/sbt/src/sbt-test/project/generated-root-no-publish/build.sbt b/sbt/src/sbt-test/project/generated-root-no-publish/build.sbt index 4526e32d4..218d90089 100644 --- a/sbt/src/sbt-test/project/generated-root-no-publish/build.sbt +++ b/sbt/src/sbt-test/project/generated-root-no-publish/build.sbt @@ -1,3 +1,5 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + val commonSettings = Seq( organization := "com.example", version := "0.1.0", diff --git a/sbt/src/sbt-test/project/generated-root-no-publish/changes/bare.sbt b/sbt/src/sbt-test/project/generated-root-no-publish/changes/bare.sbt index b7d01d3bd..f614ef398 100644 --- a/sbt/src/sbt-test/project/generated-root-no-publish/changes/bare.sbt +++ b/sbt/src/sbt-test/project/generated-root-no-publish/changes/bare.sbt @@ -1,3 +1,5 @@ +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" + organization := "com.example" version := "0.1.0" ivyPaths := IvyPaths((baseDirectory in LocalRootProject).value, Some((target in LocalRootProject).value / "ivy-cache")) diff --git a/sbt/src/sbt-test/project/transitive-plugins/build.sbt b/sbt/src/sbt-test/project/transitive-plugins/build.sbt index 163993352..a3a4057ec 100644 --- a/sbt/src/sbt-test/project/transitive-plugins/build.sbt +++ b/sbt/src/sbt-test/project/transitive-plugins/build.sbt @@ -1,4 +1,5 @@ ThisBuild / organization := "org.example" +ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" lazy val root = (project in file(".")) .settings(