diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index a275d0d5b..d05bfbe05 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -307,8 +307,22 @@ object Defaults extends BuildCommon { if (plugin) scalaBase / ("sbt-" + sbtv) else scalaBase } - def compilersSetting = compilers := Compiler.compilers(scalaInstance.value, classpathOptions.value, javaHome.value, - bootIvyConfiguration.value, fileToStore.value, scalaCompilerBridgeSource.value)(appConfiguration.value, streams.value.log) + def compilersSetting = { + compilers := { + val compilers = Compiler.compilers( + scalaInstance.value, classpathOptions.value, javaHome.value, bootIvyConfiguration.value, + fileToStore.value, scalaCompilerBridgeSource.value + )(appConfiguration.value, streams.value.log) + if (java.lang.Boolean.getBoolean("sbt.disable.interface.classloader.cache")) compilers else { + compilers.withScalac( + compilers.scalac match { + case x: AnalyzingCompiler => x.withClassLoaderCache(state.value.classLoaderCache) + case x => x + } + ) + } + } + } lazy val configTasks = docTaskSettings(doc) ++ inTask(compile)(compileInputsSettings) ++ configGlobal ++ compileAnalysisSettings ++ Seq( compile := compileTask.value,