diff --git a/ultimate/ultimate-runner/build.gradle.kts b/ultimate/ultimate-runner/build.gradle.kts index 7c770608702..0336eabc159 100644 --- a/ultimate/ultimate-runner/build.gradle.kts +++ b/ultimate/ultimate-runner/build.gradle.kts @@ -1,8 +1,14 @@ +import org.jetbrains.intellij.IntelliJPluginExtension +import org.jetbrains.intellij.tasks.PrepareSandboxTask +import org.jetbrains.intellij.tasks.RunIdeTask + apply { plugin("kotlin") } -dependencies { +configureIntellijPlugin { + version = (rootProject.extra["versions.intellij"] as String).replaceFirst("IC-", "IU-") +} - compile(ideaUltimateSdkDeps("*.jar")) +dependencies { compileOnly(project(":idea")) compileOnly(project(":idea:idea-maven")) compileOnly(project(":idea:idea-gradle")) @@ -11,38 +17,51 @@ dependencies { runtimeOnly(files(toolsJar())) } +afterEvaluate { + dependencies { + compileOnly(intellij()) + } +} -val runUltimate by task { - dependsOn(":dist", ":prepare:idea-plugin:idea-plugin", ":ideaPlugin", ":ultimate:idea-ultimate-plugin") - - classpath = the().sourceSets["main"].runtimeClasspath - - main = "com.intellij.idea.Main" - - workingDir = File(projectDir.parentFile, "ideaSDK", "bin") - +afterEvaluate { val ideaUltimatePluginDir: File by rootProject.extra + val ideaUltimateSandboxDir: File by rootProject.extra - jvmArgs( - "-Xmx1250m", - "-XX:ReservedCodeCacheSize=240m", - "-XX:+HeapDumpOnOutOfMemoryError", - "-ea", - "-Didea.is.internal=true", - "-Didea.debug.mode=true", - "-Didea.system.path=../system-idea", - "-Didea.config.path=../config-idea", - "-Dapple.laf.useScreenMenuBar=true", - "-Dapple.awt.graphics.UseQuartz=true", - "-Dsun.io.useCanonCaches=false", - "-Dplugin.path=${ideaUltimatePluginDir.absolutePath}", - "-Dkotlin.internal.mode.enabled=true", - "-Didea.additional.classpath=../idea-kotlin-runtime/kotlin-runtime.jar,../idea-kotlin-runtime/kotlin-reflect.jar" - ) + tasks.findByName("runIde")?.let { tasks.remove(it) } + tasks.findByName("prepareSandbox")?.let { tasks.remove(it) } - if (project.hasProperty("noPCE")) { - jvmArgs("-Didea.ProcessCanceledException=disabled") + val prepareSandbox by task { + configDirectory = File(ideaUltimateSandboxDir, "config") + // the rest are just some "fake" values, to keeping PrepareSandboxTask happy + setPluginName("Kotlin") + dependsOn(":dist", ":prepare:idea-plugin:idea-plugin", ":ideaPlugin", ":ultimate:idea-ultimate-plugin") + setPluginJar(File(ideaUltimatePluginDir, "lib/kotlin-script-runtime.jar")) // any small jar will do + destinationDir = File(buildDir, "sandbox-fake") } - args() -} \ No newline at end of file + task("runUltimate") { + dependsOn(":dist", ":prepare:idea-plugin:idea-plugin", ":ideaPlugin", ":ultimate:idea-ultimate-plugin") + dependsOn(prepareSandbox) + group = "intellij" + description = "Runs Intellij IDEA Ultimate with installed plugin." + setIdeaDirectory(the().ideaDependency.classes) + setConfigDirectory(File(ideaUltimateSandboxDir, "config")) + setSystemDirectory(ideaUltimateSandboxDir) + setPluginsDirectory(ideaUltimatePluginDir.parent) + jvmArgs( + "-Xmx1250m", + "-XX:ReservedCodeCacheSize=240m", + "-XX:+HeapDumpOnOutOfMemoryError", + "-ea", + "-Didea.is.internal=true", + "-Didea.debug.mode=true", + "-Dapple.laf.useScreenMenuBar=true", + "-Dapple.awt.graphics.UseQuartz=true", + "-Dsun.io.useCanonCaches=false", + "-Dkotlin.internal.mode.enabled=true" + ) + if (project.hasProperty("noPCE")) { + jvmArgs("-Didea.ProcessCanceledException=disabled") + } + } +}