diff --git a/main/src/main/scala/sbt/Main.scala b/main/src/main/scala/sbt/Main.scala index f2e7a2e9e..a2d96df0f 100644 --- a/main/src/main/scala/sbt/Main.scala +++ b/main/src/main/scala/sbt/Main.scala @@ -940,13 +940,17 @@ object BuiltinCommands { val session = Load.initialSession(structure, eval, s0) SessionSettings.checkSession(session, s2) - val s3 = addCacheStoreFactoryFactory(Project.setProject(session, structure, s2)) + val s3 = Project.setProject( + session, + structure, + s2, + st => setupGlobalFileTreeRepository(addCacheStoreFactoryFactory(st)) + ) val s4 = s3.put(Keys.useLog4J.key, Project.extract(s3).get(Keys.useLog4J)) - val s5 = setupGlobalFileTreeRepository(s4) // This is a workaround for the console task in dotty which uses the classloader cache. // We need to override the top loader in that case so that it gets the forked jline. - s5.extendedClassLoaderCache.setParent(Project.extract(s5).get(Keys.scalaInstanceTopLoader)) - addSuperShellParams(CheckBuildSources.init(LintUnused.lintUnusedFunc(s5))) + s4.extendedClassLoaderCache.setParent(Project.extract(s4).get(Keys.scalaInstanceTopLoader)) + addSuperShellParams(CheckBuildSources.init(LintUnused.lintUnusedFunc(s4))) } private val setupGlobalFileTreeRepository: State => State = { state => diff --git a/main/src/main/scala/sbt/Project.scala b/main/src/main/scala/sbt/Project.scala index b44dea4ff..d7e653127 100755 --- a/main/src/main/scala/sbt/Project.scala +++ b/main/src/main/scala/sbt/Project.scala @@ -479,7 +479,15 @@ object Project extends ProjectExtra { previousOnUnload(s.runExitHooks()) } - def setProject(session: SessionSettings, structure: BuildStructure, s: State): State = { + def setProject(session: SessionSettings, structure: BuildStructure, s: State): State = + setProject(session, structure, s, identity) + + def setProject( + session: SessionSettings, + structure: BuildStructure, + s: State, + preOnLoad: State => State + ): State = { val unloaded = runUnloadHooks(s) val (onLoad, onUnload) = getHooks(structure.data) val newAttrs = unloaded.attributes @@ -489,7 +497,7 @@ object Project extends ProjectExtra { val newState = unloaded.copy(attributes = newAttrs) // TODO: Fix this onLoad( - updateCurrent(newState) /*LogManager.setGlobalLogLevels(updateCurrent(newState), structure.data)*/ + preOnLoad(updateCurrent(newState)) /*LogManager.setGlobalLogLevels(updateCurrent(newState), structure.data)*/ ) }