mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
[java-completion] IDEA-342465 run with GradleWarmupConfigurator
GitOrigin-RevId: 6b67dcfc1d3cda3a039d9fe2919087739ec9b211
This commit is contained in:
committed by
intellij-monorepo-bot
parent
cce27bfd82
commit
dce66a744f
@@ -4,15 +4,12 @@ package com.intellij.cce.evaluation
|
||||
import com.intellij.cce.core.Language
|
||||
import com.intellij.cce.workspace.EvaluationWorkspace
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.ModalityState
|
||||
import com.intellij.openapi.application.WriteAction
|
||||
import com.intellij.openapi.diagnostic.LogLevel
|
||||
import com.intellij.openapi.diagnostic.Logger
|
||||
import com.intellij.openapi.externalSystem.autolink.ExternalSystemUnlinkedProjectAware
|
||||
import com.intellij.openapi.externalSystem.importing.ImportSpecBuilder
|
||||
import com.intellij.openapi.externalSystem.service.execution.ExternalSystemJdkUtil
|
||||
import com.intellij.openapi.externalSystem.settings.AbstractExternalSystemSettings
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemUtil
|
||||
import com.intellij.openapi.progress.runBlockingCancellable
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.project.guessProjectDir
|
||||
@@ -27,9 +24,10 @@ import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.projectImport.ProjectOpenProcessor
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager
|
||||
import org.jetbrains.plugins.gradle.GradleManager
|
||||
import org.jetbrains.plugins.gradle.GradleWarmupConfigurator
|
||||
import org.jetbrains.plugins.gradle.service.project.open.GradleProjectOpenProcessor
|
||||
import org.jetbrains.plugins.gradle.settings.GradleProjectSettings
|
||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||
import java.io.File
|
||||
import java.nio.file.Paths
|
||||
import kotlin.io.path.exists
|
||||
|
||||
@@ -135,9 +133,7 @@ private fun forceUseProjectJdkForImporter(project: Project) {
|
||||
provider.linkedProjectsSettings
|
||||
}.filterIsInstance<GradleProjectSettings>()
|
||||
|
||||
if (allGradleSettings.size != 1) {
|
||||
println("Found ${allGradleSettings.size} Gradle project settings linked to the project.")
|
||||
}
|
||||
println("Found ${allGradleSettings.size} Gradle project settings linked to the project.")
|
||||
|
||||
for (settings in allGradleSettings) {
|
||||
settings.gradleJvm = ExternalSystemJdkUtil.USE_PROJECT_JDK
|
||||
@@ -180,19 +176,18 @@ enum class JvmBuildSystem {
|
||||
runBlockingCancellable {
|
||||
when (jvmBuildSystem) {
|
||||
Gradle -> project.basePath?.let { path ->
|
||||
val projectAware = ExternalSystemUnlinkedProjectAware.EP_NAME.extensions.filter { it.systemId == GradleConstants.SYSTEM_ID }.first()
|
||||
Registry.get("external.system.auto.import.disabled").setValue(false) // force refresh
|
||||
//three steps - firstly, import, then try again to use jdk and then one more refresh
|
||||
if (!projectAware.isLinkedProject(project, path) && ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID).getLinkedProjectsSettings().isEmpty()) {
|
||||
println("link gradle project")
|
||||
projectAware.linkAndLoadProject(project, path)
|
||||
val file = File(path)
|
||||
println("gradle scheduleProjectRefresh")
|
||||
GradleWarmupConfigurator().prepareEnvironment(file.toPath())
|
||||
GradleWarmupConfigurator().runWarmup(project)
|
||||
|
||||
println("Waiting all invoked later gradle activities...")
|
||||
repeat(10) {
|
||||
ApplicationManager.getApplication().invokeAndWait({}, ModalityState.any())
|
||||
}
|
||||
println("force update jdk again")
|
||||
forceUseProjectJdkForImporter(project)
|
||||
println("refresh gradle project")
|
||||
ExternalSystemUtil.refreshProject(path, ImportSpecBuilder(project, GradleConstants.SYSTEM_ID))
|
||||
}
|
||||
|
||||
|
||||
Maven -> project.guessProjectDir()?.let { dir ->
|
||||
Logger.getInstance("#org.jetbrains.idea.maven").setLevel(LogLevel.ALL)
|
||||
Registry.get("external.system.auto.import.disabled").setValue(false) // prevent gradle interference
|
||||
|
||||
Reference in New Issue
Block a user