From d38b1c361a410ee6214ee0cb0cfad0f86ce148aa Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Mon, 11 Dec 2017 23:44:43 +0100 Subject: [PATCH] Add ultimate sdk --- buildSrc/build.gradle.kts | 2 +- .../intellij-sdk/build.gradle.kts | 30 +++++++++++++++++-- .../src/main/kotlin/intellijPluginHelpers.kt | 4 +++ ultimate/build.gradle.kts | 4 +-- ultimate/ultimate-runner/build.gradle.kts | 2 +- 5 files changed, 36 insertions(+), 6 deletions(-) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 1b85983f41c..801f011f311 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -31,9 +31,9 @@ plugins { `kotlin-dsl` } +extra["intellijUltimateEnabled"] = true extra["intellijRepo"] = "https://www.jetbrains.com/intellij-repository" extra["intellijReleaseType"] = "releases" // or "snapshots" -extra["intellijSdkDependencyName"] = "ideaIC" // "ideaIC" or "ideaIU extra["versions.intellijSdk"] = "172.4343.14" extra["versions.androidBuildTools"] = "r23.0.1" extra["versions.androidDxSources"] = "5.0.0_r2" diff --git a/buildSrc/prepare-deps/intellij-sdk/build.gradle.kts b/buildSrc/prepare-deps/intellij-sdk/build.gradle.kts index 9be617e6bce..9f670df33f4 100644 --- a/buildSrc/prepare-deps/intellij-sdk/build.gradle.kts +++ b/buildSrc/prepare-deps/intellij-sdk/build.gradle.kts @@ -7,9 +7,9 @@ import org.gradle.api.publish.ivy.internal.publisher.IvyDescriptorFileGenerator import java.io.File import org.gradle.internal.os.OperatingSystem +val intellijUltimateEnabled: Boolean by rootProject.extra val intellijRepo: String by rootProject.extra val intellijReleaseType: String by rootProject.extra -val intellijSdkDependencyName: String by rootProject.extra val intellijVersion = rootProject.extra["versions.intellijSdk"] as String repositories { @@ -17,6 +17,7 @@ repositories { } val intellij by configurations.creating +val intellijUltimate by configurations.creating val sources by configurations.creating val `jps-standalone` by configurations.creating val `jps-build-test` by configurations.creating @@ -29,7 +30,10 @@ val customDepsRepoModulesDir = File(customDepsRepoDir, "$customDepsOrg/$customDe val repoDir = customDepsRepoModulesDir dependencies { - intellij("com.jetbrains.intellij.idea:$intellijSdkDependencyName:$intellijVersion") + intellij("com.jetbrains.intellij.idea:ideaIC:$intellijVersion") + if (intellijUltimateEnabled) { + intellijUltimate("com.jetbrains.intellij.idea:ideaIU:$intellijVersion") + } sources("com.jetbrains.intellij.idea:ideaIC:$intellijVersion:sources@jar") `jps-standalone`("com.jetbrains.intellij.idea:jps-standalone:$intellijVersion") `jps-build-test`("com.jetbrains.intellij.idea:jps-build-test:$intellijVersion") @@ -51,6 +55,8 @@ fun Task.configureExtractFromConfigurationTask(sourceConfig: Configuration, extr val unzipIntellijSdk by tasks.creating { configureExtractFromConfigurationTask(intellij) { zipTree(it.singleFile) } } +val unzipIntellijUltimateSdk by tasks.creating { configureExtractFromConfigurationTask(intellijUltimate) { zipTree(it.singleFile) } } + val unzipIntellijCore by tasks.creating { configureExtractFromConfigurationTask(`intellij-core`) { zipTree(it.singleFile) } } val unzipJpsStandalone by tasks.creating { configureExtractFromConfigurationTask(`jps-standalone`) { zipTree(it.singleFile) } } @@ -77,15 +83,24 @@ fun writeIvyXml(moduleName: String, fileName: String, jarFiles: FileCollection, val prepareIvyXml by tasks.creating { dependsOn(unzipIntellijSdk, unzipIntellijCore, unzipJpsStandalone, copyIntellijSdkSources, copyJpsBuildTest) + val intellijSdkDir = File(repoDir, intellij.name) inputs.dir(intellijSdkDir) outputs.file(File(repoDir, "${intellij.name}.ivy.xml")) + + val intellijUltimateSdkDir = File(repoDir, intellijUltimate.name) + if (intellijUltimateEnabled) { + dependsOn(unzipIntellijUltimateSdk) + inputs.dir(intellijUltimateSdkDir) + outputs.file(File(repoDir, "${intellijUltimate.name}.ivy.xml")) + } val flatDeps = listOf(`intellij-core`, `jps-standalone`, `jps-build-test`) flatDeps.forEach { inputs.dir(File(repoDir, it.name)) outputs.file(File(repoDir, "${it.name}.ivy.xml")) } inputs.dir(File(repoDir, sources.name)) + doFirst { val sourcesFile = File(repoDir, "${sources.name}/${sources.singleFile.name}") writeIvyXml(intellij.name, intellij.name, @@ -95,6 +110,17 @@ val prepareIvyXml by tasks.creating { File(intellijSdkDir, "plugins").listFiles { it: File -> it.isDirectory }.forEach { writeIvyXml(it.name, "intellij.plugin.${it.name}", files("$it/lib/"), File(it, "lib"), sourcesFile) } + + if (intellijUltimateEnabled) { + writeIvyXml(intellijUltimate.name, intellijUltimate.name, + files("$intellijUltimateSdkDir/lib/").filter { !it.name.startsWith("kotlin-") }, + File(intellijUltimateSdkDir, "lib"), + sourcesFile) + File(intellijUltimateSdkDir, "plugins").listFiles { it: File -> it.isDirectory }.forEach { + writeIvyXml(it.name, "intellijUltimate.plugin.${it.name}", files("$it/lib/"), File(it, "lib"), sourcesFile) + } + } + flatDeps.forEach { writeIvyXml(it.name, it.name, files("$repoDir/${it.name}"), File(repoDir, it.name), sourcesFile) } diff --git a/buildSrc/src/main/kotlin/intellijPluginHelpers.kt b/buildSrc/src/main/kotlin/intellijPluginHelpers.kt index ecaee97cade..ba40411732d 100644 --- a/buildSrc/src/main/kotlin/intellijPluginHelpers.kt +++ b/buildSrc/src/main/kotlin/intellijPluginHelpers.kt @@ -13,8 +13,10 @@ fun RepositoryHandler.intellijSdkRepo(project: Project): IvyArtifactRepository = setUrl(baseDir) ivyPattern("${baseDir.canonicalPath}/[organisation]/[revision]/[module].ivy.xml") ivyPattern("${baseDir.canonicalPath}/[organisation]/[revision]/intellij.plugin.[module].ivy.xml") + ivyPattern("${baseDir.canonicalPath}/[organisation]/[revision]/intellijUltimate.plugin.[module].ivy.xml") artifactPattern("${baseDir.canonicalPath}/[organisation]/[revision]/[module]/lib/[artifact](-[classifier]).jar") artifactPattern("${baseDir.canonicalPath}/[organisation]/[revision]/intellij/plugins/[module]/lib/[artifact](-[classifier]).jar") + artifactPattern("${baseDir.canonicalPath}/[organisation]/[revision]/intellijUltimate/plugins/[module]/lib/[artifact](-[classifier]).jar") artifactPattern("${baseDir.canonicalPath}/[organisation]/[revision]/[module]/[artifact].jar") artifactPattern("${baseDir.canonicalPath}/[organisation]/[revision]/[module]/[artifact](-[revision])(-[classifier]).jar") artifactPattern("${baseDir.canonicalPath}/[organisation]/[revision]/sources/[artifact]-[revision]-[classifier].[ext]") @@ -26,6 +28,8 @@ fun Project.intellijCoreDep() = intellijDep("intellij-core") fun Project.intellijPluginDep(plugin: String) = intellijDep(plugin) +fun Project.intellijUltimateDep() = intellijDep("intellijUltimate") + fun ModuleDependency.includeJars(vararg names: String) { names.forEach { artifact { diff --git a/ultimate/build.gradle.kts b/ultimate/build.gradle.kts index 30017fa3897..fede8634c0f 100644 --- a/ultimate/build.gradle.kts +++ b/ultimate/build.gradle.kts @@ -30,7 +30,7 @@ dependencies { compile(project(":idea:ide-common")) { isTransitive = false } compile(project(":idea:idea-gradle")) { isTransitive = false } compileOnly(intellijCoreDep()) { includeJars("intellij-core") } - compileOnly(intellijDep()) { includeJars("annotations", "trove4j", "openapi", "idea", "util", "jdom") } + compileOnly(intellijUltimateDep()) { includeJars("annotations", "trove4j", "openapi", "idea", "util", "jdom") } compileOnly(intellijPluginDep("CSS")) compileOnly(intellijPluginDep("DatabaseTools")) compileOnly(intellijPluginDep("JavaEE")) @@ -86,7 +86,7 @@ dependencies { springClasspath(commonDep("org.springframework", "spring-web")) testCompileOnly(intellijDep()) { includeJars("gson-2.5", "annotations", "trove4j", "openapi", "idea", "util", "jdom") } - testRuntime(intellijDep()) + testRuntime(intellijUltimateDep()) testCompile(intellijPluginDep("CSS")) testCompile(intellijPluginDep("DatabaseTools")) testCompile(intellijPluginDep("JavaEE")) diff --git a/ultimate/ultimate-runner/build.gradle.kts b/ultimate/ultimate-runner/build.gradle.kts index 01618ab09c5..5eb425f3d1d 100644 --- a/ultimate/ultimate-runner/build.gradle.kts +++ b/ultimate/ultimate-runner/build.gradle.kts @@ -21,7 +21,7 @@ dependencies { compileOnly(project(":idea:idea-jvm")) runtimeOnly(files(toolsJar())) - compileOnly(intellijDep()) + compileOnly(intellijUltimateDep()) } afterEvaluate {