diff --git a/build.gradle.kts b/build.gradle.kts index f560dd75495..515ef0c4293 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -31,6 +31,7 @@ buildscript { classpath("com.gradle.publish:plugin-publish-plugin:0.9.7") classpath(kotlin("gradle-plugin", bootstrapKotlinVersion)) classpath("net.sf.proguard:proguard-gradle:5.3.3") + classpath("org.jetbrains.dokka:dokka-gradle-plugin:0.9.13") } } diff --git a/build.gradle.kts.191 b/build.gradle.kts.191 index 3be90f810fd..3e8d6c92627 100644 --- a/build.gradle.kts.191 +++ b/build.gradle.kts.191 @@ -31,6 +31,7 @@ buildscript { classpath("com.gradle.publish:plugin-publish-plugin:0.9.7") classpath(kotlin("gradle-plugin", bootstrapKotlinVersion)) classpath("net.sf.proguard:proguard-gradle:5.3.3") + classpath("org.jetbrains.dokka:dokka-gradle-plugin:0.9.13") } } diff --git a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts index 0c5922935ed..949e48c3884 100644 --- a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts @@ -1,161 +1,162 @@ -apply plugin: 'java' -apply plugin: 'java-gradle-plugin' -apply plugin: 'kotlin' -apply plugin: 'org.jetbrains.dokka' -apply plugin: 'jps-compatible' +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar +import com.gradle.publish.PluginConfig +import org.jetbrains.dokka.gradle.DokkaTask +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.pill.PillExtension -buildscript { - repositories { - jcenter() - } - dependencies { - classpath 'org.jetbrains.dokka:dokka-gradle-plugin:0.9.13' - } +plugins { + java + kotlin("jvm") + `java-gradle-plugin` + id("org.jetbrains.dokka") + id("jps-compatible") } -configureJvmProject(project) -configurePublishing(project) +// todo: make lazy +val jar: Jar by tasks +runtimeJar(rewriteDepsToShadedCompiler(jar)) + +sourcesJar() +javadocJar() +publish() repositories { - jcenter() - mavenLocal() - maven { url 'https://maven.google.com' } + google() } -configurations { - agp25CompileOnly -} +val agp25CompileOnly by configurations.creating pill { - variant = "FULL" + variant = PillExtension.Variant.FULL } dependencies { - compile project(':kotlin-gradle-plugin-api') - compile project(':kotlin-gradle-plugin-model') - compileOnly project(':compiler') - compileOnly project(':compiler:incremental-compilation-impl') - compileOnly project(':compiler:daemon-common') + compile(project(":kotlin-gradle-plugin-api")) + compile(project(":kotlin-gradle-plugin-model")) + compileOnly(project(":compiler")) + compileOnly(project(":compiler:incremental-compilation-impl")) + compileOnly(project(":compiler:daemon-common")) - compile project(':kotlin-stdlib') - compile project(':kotlin-native:kotlin-native-utils') - compileOnly project(':kotlin-reflect-api') - compileOnly project(':kotlin-android-extensions') - compileOnly project(':kotlin-build-common') - compileOnly project(':kotlin-compiler-runner') - compileOnly project(':kotlin-annotation-processing') - compileOnly project(':kotlin-annotation-processing-gradle') - compileOnly project(':kotlin-scripting-compiler') + compile(project(":kotlin-stdlib")) + compile(project(":kotlin-native:kotlin-native-utils")) + compileOnly(project(":kotlin-reflect-api")) + compileOnly(project(":kotlin-android-extensions")) + compileOnly(project(":kotlin-build-common")) + compileOnly(project(":kotlin-compiler-runner")) + compileOnly(project(":kotlin-annotation-processing")) + compileOnly(project(":kotlin-annotation-processing-gradle")) + compileOnly(project(":kotlin-scripting-compiler")) - compileOnly 'com.android.tools.build:gradle:2.0.0' - compileOnly 'org.codehaus.groovy:groovy-all:2.4.12' - compileOnly gradleApi() + compileOnly("com.android.tools.build:gradle:2.0.0") + compileOnly("org.codehaus.groovy:groovy-all:2.4.12") + compileOnly(gradleApi()) - compileOnly("kotlin.build.custom.deps:intellij-core:${rootProject.ext["versions.intellijSdk"]}") { - artifact { - name = 'intellij-core' - type = 'jar' - extension = 'jar' - } - } + compileOnly(intellijCoreDep()) { includeJars("intellij-core") } - runtime project(path: ':kotlin-compiler-embeddable', configuration: "runtimeJar") - runtime project(path: ':kotlin-annotation-processing-gradle', configuration: "runtimeJar") - runtime project(path: ':kotlin-android-extensions', configuration: 'runtimeJar') - runtime project(path: ':kotlin-compiler-runner', configuration: 'runtimeJar') - runtime project(path: ':kotlin-scripting-compiler-embeddable', configuration: 'runtimeJar') - runtime project(':kotlin-reflect') + runtime(projectRuntimeJar(":kotlin-compiler-embeddable")) + runtime(projectRuntimeJar(":kotlin-annotation-processing-gradle")) + runtime(projectRuntimeJar(":kotlin-android-extensions")) + runtime(projectRuntimeJar(":kotlin-compiler-runner")) + runtime(projectRuntimeJar(":kotlin-scripting-compiler-embeddable")) + runtime(project(":kotlin-reflect")) // com.android.tools.build:gradle has ~50 unneeded transitive dependencies - agp25CompileOnly('com.android.tools.build:gradle:3.0.0-alpha1') { transitive = false } - agp25CompileOnly('com.android.tools.build:gradle-core:3.0.0-alpha1') { transitive = false } - agp25CompileOnly('com.android.tools.build:builder-model:3.0.0-alpha1') { transitive = false } - agp25CompileOnly 'org.codehaus.groovy:groovy-all:2.4.12' - agp25CompileOnly gradleApi() - agp25CompileOnly project(':kotlin-annotation-processing') - agp25CompileOnly project(':kotlin-annotation-processing-gradle') + agp25CompileOnly("com.android.tools.build:gradle:3.0.0-alpha1") { isTransitive = false } + agp25CompileOnly("com.android.tools.build:gradle-core:3.0.0-alpha1") { isTransitive = false } + agp25CompileOnly("com.android.tools.build:builder-model:3.0.0-alpha1") { isTransitive = false } + agp25CompileOnly("org.codehaus.groovy:groovy-all:2.4.12") + agp25CompileOnly(gradleApi()) + agp25CompileOnly(project(":kotlin-annotation-processing")) + agp25CompileOnly(project(":kotlin-annotation-processing-gradle")) - testCompileOnly project(':compiler') - testCompile project(path: ':kotlin-build-common', configuration: 'tests-jar') - testCompile project(':kotlin-android-extensions') - testCompile project(':kotlin-compiler-runner') - testCompile project(':kotlin-test::kotlin-test-junit') - testCompile "junit:junit:4.12" - testCompileOnly project(':kotlin-reflect-api') - testCompileOnly project(':kotlin-annotation-processing') - testCompileOnly project(':kotlin-annotation-processing-gradle') + testCompileOnly (project(":compiler")) + testCompile(projectTests(":kotlin-build-common")) + testCompile(project(":kotlin-android-extensions")) + testCompile(project(":kotlin-compiler-runner")) + testCompile(project(":kotlin-test::kotlin-test-junit")) + testCompile("junit:junit:4.12") + testCompileOnly(project(":kotlin-reflect-api")) + testCompileOnly(project(":kotlin-annotation-processing")) + testCompileOnly(project(":kotlin-annotation-processing-gradle")) } -tasks.withType(project.compileKotlin.class) { - kotlinOptions.jdkHome = JDK_18 - kotlinOptions.languageVersion = "1.2" - kotlinOptions.apiVersion = "1.2" - kotlinOptions.freeCompilerArgs += ["-Xskip-metadata-version-check"] -} +val agp25 by sourceSets.creating +agp25.compileClasspath += configurations.compile + agp25CompileOnly + mainSourceSet.output -sourceSets.main.java.srcDirs += sourceSets.main.kotlin.srcDirs +tasks { + withType { + kotlinOptions.jdkHome = rootProject.extra["JDK_18"] as String + kotlinOptions.languageVersion = "1.2" + kotlinOptions.apiVersion = "1.2" + kotlinOptions.freeCompilerArgs += listOf("-Xskip-metadata-version-check") + } -sourceSets { - agp25 { - compileClasspath += configurations.compile + configurations.agp25CompileOnly + sourceSets.main.output + named("processResources") { + val propertiesToExpand = mapOf("projectVersion" to project.version) + for ((name, value) in propertiesToExpand) { + inputs.property(name, value) + } + expand("projectVersion" to project.version) + } + + named("jar") { + dependsOn(tasks.named("agp25Classes")) + from(agp25.output.classesDirs) + callGroovy("manifestAttributes", manifest, project) + } + + named("validateTaskProperties") { + failOnWarning = true + } + + named("dokka") { + outputFormat = "markdown" + includes = listOf("$projectDir/Module.md") } } -processResources { - def props = ["projectVersion" : project.version] - inputs.properties(props) - expand(props) -} - -jar.dependsOn agp25Classes - -jar { - from sourceSets.agp25.output.classesDirs - manifestAttributes(manifest, project) -} - -ArtifactsKt.runtimeJar(project, EmbeddableKt.rewriteDepsToShadedCompiler(project, jar, {}), {}) - -artifacts { - archives sourcesJar - archives javadocJar -} - -test.executable = "${JDK_18}/bin/java" -test.dependsOn(validateTaskProperties) - -validateTaskProperties.failOnWarning = true - -dokka { - outputFormat = 'markdown' - includes = ["${projectDir}/Module.md"] +projectTest { + executable = "${rootProject.extra["JDK_18"]!!}/bin/java" + dependsOn(tasks.named("validateTaskProperties")) } pluginBundle { - plugins { - kotlinJvmPlugin { - id = 'org.jetbrains.kotlin.jvm' - description = displayName = 'Kotlin JVM plugin' - } - kotlinMultiplatformPlugin { - id = 'org.jetbrains.kotlin.multiplatform' - description = displayName = 'Kotlin Multiplatform plugin' - } - kotlinAndroidPlugin { - id = 'org.jetbrains.kotlin.android' - description = displayName = 'Kotlin Android plugin' - } - kotlinAndroidExtensionsPlugin { - id = 'org.jetbrains.kotlin.android.extensions' - description = displayName = 'Kotlin Android Extensions plugin' - } - kotlinKaptPlugin { - id = 'org.jetbrains.kotlin.kapt' - description = displayName = 'Kotlin Kapt plugin' - } - kotlinScriptingPlugin { - id = 'org.jetbrains.kotlin.plugin.scripting' - description = displayName = 'Gradle plugin for kotlin scripting' + fun create(name: String, id: String, display: String) { + (plugins).create(name) { + this.id = id + this.displayName = display + this.description = display } } -} \ No newline at end of file + + create( + name = "kotlinJvmPlugin", + id = "org.jetbrains.kotlin.jvm", + display = "Kotlin JVM plugin" + ) + create( + name = "kotlinMultiplatformPlugin", + id = "org.jetbrains.kotlin.multiplatform", + display = "Kotlin Multiplatform plugin" + ) + create( + name = "kotlinAndroidPlugin", + id = "org.jetbrains.kotlin.android", + display = "Android" + ) + create( + name = "kotlinAndroidExtensionsPlugin", + id = "org.jetbrains.kotlin.android.extensions", + display = "Kotlin Android Extensions plugin" + ) + create( + name = "kotlinKaptPlugin", + id = "org.jetbrains.kotlin.kapt", + display = "Kotlin Kapt plugin" + ) + create( + name = "kotlinScriptingPlugin", + id = "org.jetbrains.kotlin.plugin.scripting", + display = "Gradle plugin for kotlin scripting" + ) +}