diff --git a/ant/build.gradle.kts b/ant/build.gradle.kts index b16140c3f66..4f35d7290a1 100644 --- a/ant/build.gradle.kts +++ b/ant/build.gradle.kts @@ -19,6 +19,3 @@ sourceSets { runtimeJar { manifest.attributes.put("Class-Path", "$compilerManifestClassPath kotlin-preloader.jar") } - -dist() - diff --git a/build.gradle.kts b/build.gradle.kts index 55a826d36b4..4ab5e5037d4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -437,13 +437,8 @@ gradle.taskGraph.whenReady { } } -val dist by task { - val childDistTasks = getTasksByName("dist", true) - this@task - dependsOn(childDistTasks) - - into(distDir) - from(files("compiler/cli/bin")) { into("kotlinc/bin") } - from(files("license")) { into("kotlinc/license") } +val dist = tasks.register("dist") { + dependsOn(":kotlin-compiler:dist") } val copyCompilerToIdeaPlugin by task { diff --git a/buildSrc/src/main/kotlin/artifacts.kt b/buildSrc/src/main/kotlin/artifacts.kt index 7f8277f8ce7..b890fb6856e 100644 --- a/buildSrc/src/main/kotlin/artifacts.kt +++ b/buildSrc/src/main/kotlin/artifacts.kt @@ -151,31 +151,6 @@ fun Project.publish(body: Upload.() -> Unit = {}): Upload { } } -fun Project.dist( - targetDir: File? = null, - targetName: String? = null, - fromTask: Task? = null, - body: AbstractCopyTask.() -> Unit = {} -): AbstractCopyTask { - val distJarCfg = configurations.getOrCreate("distJar") - val distLibDir: File by rootProject.extra - val distJarName = targetName ?: (the().archivesBaseName + ".jar") - val thisProject = this - - return task("dist") { - body() - (fromTask ?: runtimeJarTaskIfExists())?.let { - from(it) - if (targetName != null) { - rename(it.outputs.files.singleFile.name, targetName) - } - } - rename("-${java.util.regex.Pattern.quote(thisProject.version.toString())}", "") - into(targetDir ?: distLibDir) - project.addArtifact(distJarCfg, this, File(targetDir ?: distLibDir, distJarName)) - } -} - private fun Project.runtimeJarTaskIfExists(): Task? = if (extra.has("runtimeJarTask")) extra["runtimeJarTask"] as Task else tasks.findByName("jar") diff --git a/buildSrc/src/main/kotlin/dependencies.kt b/buildSrc/src/main/kotlin/dependencies.kt index 50ee3688300..3745ac5adbf 100644 --- a/buildSrc/src/main/kotlin/dependencies.kt +++ b/buildSrc/src/main/kotlin/dependencies.kt @@ -73,13 +73,14 @@ fun Project.ideaUltimatePreloadedDeps(vararg artifactBaseNames: String, subdir: else files() } -fun Project.kotlinDep(artifactBaseName: String, version: String): String = "org.jetbrains.kotlin:kotlin-$artifactBaseName:$version" +fun Project.kotlinDep(artifactBaseName: String, version: String, classifier: String? = null): String = + listOfNotNull("org.jetbrains.kotlin:kotlin-$artifactBaseName:$version", classifier).joinToString(":") -fun Project.kotlinStdlib(suffix: String? = null): Any { +fun Project.kotlinStdlib(suffix: String? = null, classifier: String? = null): Any { return if (kotlinBuildProperties.useBootstrapStdlib) - kotlinDep(listOfNotNull("stdlib", suffix).joinToString("-"), bootstrapKotlinVersion) + kotlinDep(listOfNotNull("stdlib", suffix).joinToString("-"), bootstrapKotlinVersion, classifier) else - dependencies.project(listOfNotNull(":kotlin-stdlib", suffix).joinToString("-")) + dependencies.project(listOfNotNull(":kotlin-stdlib", suffix).joinToString("-"), classifier) } fun Project.kotlinBuiltins(): Any = diff --git a/compiler/cli/cli-runner/build.gradle.kts b/compiler/cli/cli-runner/build.gradle.kts index 30e05bf6282..962ad6b4135 100644 --- a/compiler/cli/cli-runner/build.gradle.kts +++ b/compiler/cli/cli-runner/build.gradle.kts @@ -19,6 +19,3 @@ runtimeJar { manifest.attributes.put("Main-Class", "org.jetbrains.kotlin.runner.Main") manifest.attributes.put("Class-Path", "kotlin-stdlib.jar") } - -dist() - diff --git a/compiler/daemon/build.gradle.kts b/compiler/daemon/build.gradle.kts index 359ddac739b..53008ccebd9 100644 --- a/compiler/daemon/build.gradle.kts +++ b/compiler/daemon/build.gradle.kts @@ -57,5 +57,3 @@ runtimeJar(task("shadowJar")) { sourcesJar() javadocJar() - -dist() diff --git a/compiler/daemon/daemon-client-new/build.gradle.kts b/compiler/daemon/daemon-client-new/build.gradle.kts index 16e7abcfa3f..de5c62ec4c5 100644 --- a/compiler/daemon/daemon-client-new/build.gradle.kts +++ b/compiler/daemon/daemon-client-new/build.gradle.kts @@ -71,5 +71,3 @@ runtimeJar(task("shadowJar")) { sourcesJar() javadocJar() - -dist() diff --git a/compiler/daemon/daemon-client/build.gradle.kts b/compiler/daemon/daemon-client/build.gradle.kts index 352d83c0420..e9217983b1c 100644 --- a/compiler/daemon/daemon-client/build.gradle.kts +++ b/compiler/daemon/daemon-client/build.gradle.kts @@ -50,5 +50,3 @@ runtimeJar() sourcesJar() javadocJar() - -dist() \ No newline at end of file diff --git a/compiler/preloader/build.gradle.kts b/compiler/preloader/build.gradle.kts index dd272038843..a4c0c9804b7 100644 --- a/compiler/preloader/build.gradle.kts +++ b/compiler/preloader/build.gradle.kts @@ -22,5 +22,3 @@ sourceSets { runtimeJar { manifest.attributes.put("Main-Class", "org.jetbrains.kotlin.preloading.Preloader") } - -dist() diff --git a/libraries/commonConfiguration.gradle b/libraries/commonConfiguration.gradle index d1aa245e619..686a9479154 100644 --- a/libraries/commonConfiguration.gradle +++ b/libraries/commonConfiguration.gradle @@ -1,5 +1,9 @@ ext.configureJvmProject = { Project project -> project.configure(project) { + configurations { + sources + } + task sourcesJar(type: Jar, dependsOn: classes) { classifier = 'sources' from sourceSets.main.kotlin @@ -31,6 +35,10 @@ ext.configureJavaOnlyJvm6Project = { Project project -> ext.configureJvm6Project = { Project project -> project.configure(project) { + configurations { + sources + } + project.ext.jvmTarget = "1.6" project.ext.javaHome = JDK_16 @@ -132,24 +140,6 @@ ext.signPom = { Project project, MavenDeployer deployer -> } } -ext.configureDist = { Project project -> - project.configure(project) { - configurations { - distJar - } - - task dist(type: Copy, dependsOn: assemble) { - rename "-${java.util.regex.Pattern.quote(version)}", '' - into distLibDir - afterEvaluate { - project.artifacts { - distJar file: file("$distLibDir${File.separator}${archivesBaseName}.jar"), builtBy: "dist" - } - } - } - } -} - ext.configurePublishing = { Project project -> project.configure(project) { apply plugin: 'maven' @@ -219,8 +209,8 @@ allprojects { project -> project.ext.javadocJar = { lambda = {} -> ArtifactsKt.javadocJar(project, lambda) } - + dependencies.ext.kotlinStdlib = { suffix -> - DependenciesKt.kotlinStdlib(project, suffix) + DependenciesKt.kotlinStdlib(project, suffix, null) } } diff --git a/libraries/kotlin.test/annotations-common/build.gradle b/libraries/kotlin.test/annotations-common/build.gradle index c759bf60454..11d112fb140 100644 --- a/libraries/kotlin.test/annotations-common/build.gradle +++ b/libraries/kotlin.test/annotations-common/build.gradle @@ -3,10 +3,8 @@ description = 'Kotlin Test Annotations Common' apply plugin: 'kotlin-platform-common' apply plugin: 'pill-configurable' -configureDist(project) configurePublishing(project) - dependencies { compile kotlinStdlib("common") testCompile project(":kotlin-test:kotlin-test-common") diff --git a/libraries/kotlin.test/common/build.gradle b/libraries/kotlin.test/common/build.gradle index 99e789d167e..c046bf88ecb 100644 --- a/libraries/kotlin.test/common/build.gradle +++ b/libraries/kotlin.test/common/build.gradle @@ -3,10 +3,8 @@ description = 'Kotlin Test Common' apply plugin: 'kotlin-platform-common' apply plugin: 'pill-configurable' -configureDist(project) configurePublishing(project) - dependencies { compile kotlinStdlib("common") testCompile project(":kotlin-test:kotlin-test-annotations-common") diff --git a/libraries/kotlin.test/js-ir/build.gradle b/libraries/kotlin.test/js-ir/build.gradle index 32aa071b416..f4e834378c7 100644 --- a/libraries/kotlin.test/js-ir/build.gradle +++ b/libraries/kotlin.test/js-ir/build.gradle @@ -68,11 +68,3 @@ artifacts { if (project.findProperty("kotlin.stdlib.js.ir.publish")?.toBoolean() == true) { configurePublishing(project) } - -if (project.findProperty("kotlin.stdlib.js.ir.dist")?.toBoolean() == true) { - configureDist(project) - - dist { - from(jar, sourcesJar) - } -} diff --git a/libraries/kotlin.test/js/build.gradle b/libraries/kotlin.test/js/build.gradle index abc06f8fd64..054c1a33a35 100644 --- a/libraries/kotlin.test/js/build.gradle +++ b/libraries/kotlin.test/js/build.gradle @@ -2,9 +2,13 @@ description = 'Kotlin Test for JS' apply plugin: 'kotlin-platform-js' -configureDist(project) configurePublishing(project) +configurations { + sources + distJs +} + dependencies { expectedBy project(':kotlin-test:kotlin-test-common') expectedBy project(':kotlin-test:kotlin-test-annotations-common') @@ -44,17 +48,10 @@ task sourcesJar(type: Jar, dependsOn: classes) { artifacts { archives sourcesJar + sources sourcesJar + distJs(file(compileKotlin2Js.kotlinOptions.outputFile)) { + builtBy(compileKotlin2Js) + } } javadocJar() - -task distJs(type: Copy) { - dependsOn(compileKotlin2Js) - from(compileKotlin2Js.kotlinOptions.outputFile) - into "$distDir/js" -} - -dist { - dependsOn distJs - from (jar, sourcesJar) -} \ No newline at end of file diff --git a/libraries/kotlin.test/junit/build.gradle b/libraries/kotlin.test/junit/build.gradle index 45f0b300d4e..a5e05e75135 100644 --- a/libraries/kotlin.test/junit/build.gradle +++ b/libraries/kotlin.test/junit/build.gradle @@ -4,7 +4,6 @@ apply plugin: 'kotlin-platform-jvm' apply plugin: 'pill-configurable' configureJvm6Project(project) -configureDist(project) configurePublishing(project) pill { @@ -24,14 +23,11 @@ jar { artifacts { archives sourcesJar + sources sourcesJar } javadocJar() -dist { - from (jar, sourcesJar) -} - compileKotlin { kotlinOptions.freeCompilerArgs = ["-Xallow-kotlin-package", "-module-name", project.name] } diff --git a/libraries/kotlin.test/junit5/build.gradle b/libraries/kotlin.test/junit5/build.gradle index 67b2d059eeb..53b8f77bdab 100644 --- a/libraries/kotlin.test/junit5/build.gradle +++ b/libraries/kotlin.test/junit5/build.gradle @@ -3,7 +3,6 @@ description = 'Kotlin Test JUnit 5' apply plugin: 'kotlin-platform-jvm' configureJvm6Project(project) -configureDist(project) configurePublishing(project) ext.javaHome = JDK_18 ext.jvmTarget = "1.8" @@ -24,14 +23,11 @@ jar { artifacts { archives sourcesJar + sources sourcesJar } javadocJar() -dist { - from (jar, sourcesJar) -} - tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) { kotlinOptions.jdkHome = JDK_18 kotlinOptions.jvmTarget = 1.8 diff --git a/libraries/kotlin.test/jvm/build.gradle b/libraries/kotlin.test/jvm/build.gradle index cfbd6fe2e0c..37cf59d635c 100644 --- a/libraries/kotlin.test/jvm/build.gradle +++ b/libraries/kotlin.test/jvm/build.gradle @@ -4,7 +4,6 @@ apply plugin: 'kotlin-platform-jvm' apply plugin: 'pill-configurable' configureJvm6Project(project) -configureDist(project) configurePublishing(project) pill { @@ -47,15 +46,12 @@ task modularJar(type: Jar) { artifacts { archives sourcesJar + sources sourcesJar archives modularJar } javadocJar() -dist { - from (jar, sourcesJar) -} - compileKotlin { kotlinOptions.freeCompilerArgs = ["-Xallow-kotlin-package", "-Xnormalize-constructor-calls=enable", "-Xuse-experimental=kotlin.contracts.ExperimentalContracts", diff --git a/libraries/kotlin.test/testng/build.gradle b/libraries/kotlin.test/testng/build.gradle index 510a13f5b33..52e85f516ca 100644 --- a/libraries/kotlin.test/testng/build.gradle +++ b/libraries/kotlin.test/testng/build.gradle @@ -3,32 +3,26 @@ description = 'Kotlin Test TestNG' apply plugin: 'kotlin-platform-jvm' configureJvm6Project(project) -configureDist(project) configurePublishing(project) ext.javaHome = JDK_17 - dependencies { expectedBy project(':kotlin-test:kotlin-test-annotations-common') compile project(':kotlin-test:kotlin-test-jvm') compile('org.testng:testng:6.13.1') } - jar { manifestAttributes(manifest, project, 'Test') } artifacts { archives sourcesJar + sources sourcesJar } javadocJar() -dist { - from (jar, sourcesJar) -} - compileKotlin { kotlinOptions.freeCompilerArgs = ["-Xallow-kotlin-package", "-module-name", project.name] } diff --git a/libraries/reflect/build.gradle.kts b/libraries/reflect/build.gradle.kts index 250c647a47e..0e4d16cd02d 100644 --- a/libraries/reflect/build.gradle.kts +++ b/libraries/reflect/build.gradle.kts @@ -222,7 +222,3 @@ artifacts { } javadocJar() - -dist(fromTask = result) { - from(sourcesJar) -} diff --git a/libraries/scripting/common/build.gradle.kts b/libraries/scripting/common/build.gradle.kts index 48dff743971..8b16936d519 100644 --- a/libraries/scripting/common/build.gradle.kts +++ b/libraries/scripting/common/build.gradle.kts @@ -23,5 +23,3 @@ publish() runtimeJar() sourcesJar() javadocJar() - -dist() diff --git a/libraries/scripting/jvm/build.gradle.kts b/libraries/scripting/jvm/build.gradle.kts index bde4d49c322..da391d74f65 100644 --- a/libraries/scripting/jvm/build.gradle.kts +++ b/libraries/scripting/jvm/build.gradle.kts @@ -22,5 +22,3 @@ publish() runtimeJar() sourcesJar() javadocJar() - -dist() diff --git a/libraries/stdlib/common/build.gradle b/libraries/stdlib/common/build.gradle index 3313c00e6ea..c6cb1c8e8f0 100644 --- a/libraries/stdlib/common/build.gradle +++ b/libraries/stdlib/common/build.gradle @@ -3,7 +3,6 @@ description = 'Kotlin Common Standard Library' apply plugin: 'kotlin-platform-common' apply plugin: 'pill-configurable' -configureDist(project) configurePublishing(project) def commonSrcDir = "../src" @@ -109,15 +108,4 @@ artifacts { javadocJar() -// TODO: call the "dist" task instead, once we need to publish kotlin-stdlib-common.jar with the compiler distribution -task distCommon(type: Copy) { - from(jar) - from(sourcesJar) - into "$distDir/common" - rename "-${java.util.regex.Pattern.quote(version)}", '' -} - -dist.dependsOn distCommon - - classes.setDependsOn(classes.dependsOn.findAll { it != "compileJava" }) diff --git a/libraries/stdlib/jdk7/build.gradle b/libraries/stdlib/jdk7/build.gradle index b78bd52ad24..4bffbd69b73 100644 --- a/libraries/stdlib/jdk7/build.gradle +++ b/libraries/stdlib/jdk7/build.gradle @@ -4,7 +4,6 @@ apply plugin: 'kotlin' apply plugin: 'pill-configurable' configureJvm6Project(project) -configureDist(project) configurePublishing(project) ext.javaHome = JDK_17 @@ -67,16 +66,13 @@ task modularJar(type: Jar) { artifacts { archives sourcesJar + sources sourcesJar + archives modularJar } javadocJar() -dist { - from (jar, sourcesJar) -} - - tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) { kotlinOptions.jdkHome = JDK_17 } diff --git a/libraries/stdlib/jdk8/build.gradle b/libraries/stdlib/jdk8/build.gradle index 8e65103f05d..d89a26b6451 100644 --- a/libraries/stdlib/jdk8/build.gradle +++ b/libraries/stdlib/jdk8/build.gradle @@ -4,7 +4,6 @@ apply plugin: 'kotlin' apply plugin: 'pill-configurable' configureJvm6Project(project) -configureDist(project) configurePublishing(project) ext.javaHome = JDK_18 ext.jvmTarget = "1.8" @@ -61,15 +60,13 @@ task modularJar(type: Jar) { artifacts { archives sourcesJar + sources sourcesJar + archives modularJar } javadocJar() -dist { - from (jar, sourcesJar) -} - tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) { kotlinOptions.jdkHome = JDK_18 kotlinOptions.jvmTarget = 1.8 diff --git a/libraries/stdlib/js-ir/build.gradle b/libraries/stdlib/js-ir/build.gradle index 991e26b2d02..a2ee11822ea 100644 --- a/libraries/stdlib/js-ir/build.gradle +++ b/libraries/stdlib/js-ir/build.gradle @@ -161,13 +161,6 @@ if (project.findProperty("kotlin.stdlib.js.ir.publish")?.toBoolean() == true) { configurePublishing(project) } -if (project.findProperty("kotlin.stdlib.js.ir.dist")?.toBoolean() == true) { - configureDist(project) - dist { - from (jar, sourcesJar) - } -} - node { download = true version = '8.9.4' // The default 6.9.1 has buggy hyperbolic functions implementation diff --git a/libraries/stdlib/js-v1/build.gradle b/libraries/stdlib/js-v1/build.gradle index aeab56a349f..f71654338fa 100644 --- a/libraries/stdlib/js-v1/build.gradle +++ b/libraries/stdlib/js-v1/build.gradle @@ -7,9 +7,14 @@ description = 'Kotlin Standard Library for JS' apply plugin: 'kotlin-platform-js' apply plugin: 'idea' -configureDist(project) configurePublishing(project) +configurations { + sources + commonSources + distSources + distJs +} def builtinsSrcDir = "${buildDir}/builtin-sources" def builtinsSrcDir2 = "${buildDir}/builtin-sources-for-builtins" @@ -77,9 +82,6 @@ sourceSets { } } -configurations { - commonSources -} dependencies { expectedBy project(":kotlin-stdlib-common") commonSources project(path: ":kotlin-stdlib-common", configuration: "sources") @@ -331,9 +333,8 @@ task sourcesJar(type: Jar, dependsOn: compileJs) { task distSourcesJar(type: Jar) { dependsOn(sourcesJar, configurations.commonSources) - baseName = 'dist-kotlin-stdlib-js' - version = null - classifier = 'sources' + destinationDirectory = file("$buildDir/lib/dist") + archiveClassifier = 'sources' duplicatesStrategy = DuplicatesStrategy.FAIL from zipTree(sourcesJar.outputs.files.singleFile) @@ -354,23 +355,16 @@ artifacts { runtime mergedJar archives mergedJar archives sourcesJar + sources sourcesJar + distSources distSourcesJar + + compileJs.outputs.files.forEach { artifact -> + distJs(artifact) { builtBy(compileJs) } + } } javadocJar() -task distJs(type: Copy) { - from(compileJs) - into "$distDir/js" -} - -dist { - dependsOn distJs - [mergedJar, distSourcesJar].forEach { - rename("dist-", "") - from(it) - } -} - node { download = true version = '8.9.4' // The default 6.9.1 has buggy hyperbolic functions implementation diff --git a/libraries/stdlib/jvm-minimal-for-test/build.gradle.kts b/libraries/stdlib/jvm-minimal-for-test/build.gradle.kts index ec318c0f9b3..3201847ba3e 100644 --- a/libraries/stdlib/jvm-minimal-for-test/build.gradle.kts +++ b/libraries/stdlib/jvm-minimal-for-test/build.gradle.kts @@ -12,6 +12,11 @@ javaHome = rootProject.extra["JDK_16"] as String val builtins by configurations.creating +val runtime by configurations +val runtimeJar by configurations.creating { + runtime.extendsFrom(this) +} + dependencies { compileOnly(project(":kotlin-stdlib")) builtins(project(":core:builtins")) @@ -61,14 +66,11 @@ tasks.withType { } val jar = runtimeJar { + archiveFileName.set("kotlin-stdlib-minimal-for-test.jar") dependsOn(builtins) from(provider { zipTree(builtins.singleFile) }) { include("kotlin/**") } } -val distDir: String by rootProject.extra - -dist(targetName = "kotlin-stdlib-minimal-for-test.jar", targetDir = File(distDir), fromTask = jar) - publishing { publications { create("internal") { diff --git a/libraries/stdlib/jvm/build.gradle b/libraries/stdlib/jvm/build.gradle index 1c047a0f9b8..6af92870582 100644 --- a/libraries/stdlib/jvm/build.gradle +++ b/libraries/stdlib/jvm/build.gradle @@ -6,9 +6,12 @@ apply plugin: 'pill-configurable' archivesBaseName = 'kotlin-stdlib' configureJvm6Project(project) -configureDist(project) configurePublishing(project) +configurations { + distSources +} + pill { importAsLibrary = true } @@ -105,10 +108,10 @@ sourcesJar { task distSourcesJar(type: Jar) { dependsOn(sourcesJar, configurations.commonSources) - baseName = 'dist-kotlin-stdlib' - version = null + destinationDirectory = file("$buildDir/lib/dist") classifier = 'sources' duplicatesStrategy = DuplicatesStrategy.FAIL + from zipTree(sourcesJar.outputs.files.singleFile) from(zipTree(configurations.commonSources.singleFile)) { @@ -118,12 +121,6 @@ task distSourcesJar(type: Jar) { } } -task distMavenSources(type: Copy) { - from(sourcesJar) - into "$distDir/maven" - rename "-${java.util.regex.Pattern.quote(version)}", '' -} - task modularJar(type: Jar) { dependsOn(jar) manifestAttributes(manifest, project, 'Main', true) @@ -138,25 +135,13 @@ task modularJar(type: Jar) { artifacts { archives sourcesJar + sources sourcesJar + distSources distSourcesJar archives modularJar } javadocJar() -dist { - dependsOn distMavenSources - - [jar, distSourcesJar].forEach { - from(it) { - rename('dist-', '') - } - } - - from (configurations.compile) { - include 'annotations*.jar' - } -} - task dexMethodCount(type: DexMethodCount) { from jar ownPackages = ['kotlin'] diff --git a/libraries/tools/kotlin-annotations-android/build.gradle.kts b/libraries/tools/kotlin-annotations-android/build.gradle.kts index d595cd17cfa..08861f8f656 100644 --- a/libraries/tools/kotlin-annotations-android/build.gradle.kts +++ b/libraries/tools/kotlin-annotations-android/build.gradle.kts @@ -37,5 +37,3 @@ publish() sourcesJar() javadocJar() runtimeJar() -dist() - diff --git a/libraries/tools/kotlin-annotations-jvm/build.gradle b/libraries/tools/kotlin-annotations-jvm/build.gradle index 528d6836c10..01c26097d7f 100644 --- a/libraries/tools/kotlin-annotations-jvm/build.gradle +++ b/libraries/tools/kotlin-annotations-jvm/build.gradle @@ -4,7 +4,6 @@ apply plugin: 'kotlin' apply plugin: 'pill-configurable' configureJvm6Project(project) -configureDist(project) configurePublishing(project) pill { @@ -25,14 +24,11 @@ dependencies { artifacts { archives sourcesJar + sources sourcesJar } javadocJar() -dist { - from (jar, sourcesJar) -} - tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) { kotlinOptions.jdkHome = JDK_16 kotlinOptions.jvmTarget = 1.6 diff --git a/libraries/tools/kotlin-main-kts/build.gradle.kts b/libraries/tools/kotlin-main-kts/build.gradle.kts index a0164174286..96f814c495b 100644 --- a/libraries/tools/kotlin-main-kts/build.gradle.kts +++ b/libraries/tools/kotlin-main-kts/build.gradle.kts @@ -17,18 +17,12 @@ val jarBaseName = property("archivesBaseName") as String val proguardLibraryJars by configurations.creating -val default by configurations -val runtimeJar by configurations.creating - -default.apply { - extendsFrom(runtimeJar) -} - val projectsDependencies = listOf( ":kotlin-scripting-common", ":kotlin-scripting-jvm", ":kotlin-script-util", - ":kotlin-script-runtime") + ":kotlin-script-runtime" +) dependencies { projectsDependencies.forEach { @@ -95,17 +89,18 @@ val proguard by task { libraryjars(mapOf("filter" to "!META-INF/versions/**"), proguardLibraryJars) } -val pack = if (shrink) proguard else packJar - -runtimeJarArtifactBy(pack, pack.outputs.files.singleFile) { - name = jarBaseName - classifier = "" +val resultJar = tasks.register("resultJar") { + val pack = if (shrink) proguard else packJar + dependsOn(pack) + setupPublicJar(jarBaseName) + from { + zipTree(pack.outputs.files.singleFile) + } } -dist( - targetName = "$name.jar", - fromTask = pack -) +addArtifact("runtime", resultJar) +addArtifact("archives", resultJar) sourcesJar() + javadocJar() diff --git a/libraries/tools/kotlinp/build.gradle.kts b/libraries/tools/kotlinp/build.gradle.kts index fecabc8bcae..331f1d8c809 100644 --- a/libraries/tools/kotlinp/build.gradle.kts +++ b/libraries/tools/kotlinp/build.gradle.kts @@ -60,8 +60,7 @@ tasks { } "test" { // These dependencies are needed because ForTestCompileRuntime loads jars from dist - dependsOn(":kotlin-reflect:dist") - dependsOn(":kotlin-script-runtime:dist") + dependsOn(":dist") } } diff --git a/libraries/tools/mutability-annotations-compat/build.gradle.kts b/libraries/tools/mutability-annotations-compat/build.gradle.kts index 6323494418b..333e6186fca 100644 --- a/libraries/tools/mutability-annotations-compat/build.gradle.kts +++ b/libraries/tools/mutability-annotations-compat/build.gradle.kts @@ -16,5 +16,3 @@ sourceSets { "main" { projectDefault() } "test" {} } - -dist() diff --git a/libraries/tools/script-runtime/build.gradle b/libraries/tools/script-runtime/build.gradle index 2d1d3f45fd7..b3951d4617d 100644 --- a/libraries/tools/script-runtime/build.gradle +++ b/libraries/tools/script-runtime/build.gradle @@ -4,7 +4,6 @@ apply plugin: 'kotlin' apply plugin: 'pill-configurable' configureJvm6Project(project) -configureDist(project) configurePublishing(project) pill { @@ -33,15 +32,12 @@ jar { artifacts { archives sourcesJar + sources sourcesJar mainJar jar } javadocJar() -dist { - from (jar, sourcesJar) -} - compileKotlin { kotlinOptions.freeCompilerArgs = [ "-Xallow-kotlin-package", @@ -49,5 +45,3 @@ compileKotlin { "-module-name", project.name ] } - - diff --git a/plugins/allopen/allopen-cli/build.gradle.kts b/plugins/allopen/allopen-cli/build.gradle.kts index d045219caf6..2d4dfb5fa8e 100644 --- a/plugins/allopen/allopen-cli/build.gradle.kts +++ b/plugins/allopen/allopen-cli/build.gradle.kts @@ -30,11 +30,9 @@ sourceSets { "test" { projectDefault() } } -val jar = runtimeJar {} +runtimeJar() -testsJar {} - -dist(targetName = the().archivesBaseName.removePrefix("kotlin-") + ".jar") +testsJar() projectTest(parallel = true) { workingDir = rootDir diff --git a/plugins/android-extensions/android-extensions-compiler/build.gradle.kts b/plugins/android-extensions/android-extensions-compiler/build.gradle.kts index 9746c042bbe..1d5228b3e65 100644 --- a/plugins/android-extensions/android-extensions-compiler/build.gradle.kts +++ b/plugins/android-extensions/android-extensions-compiler/build.gradle.kts @@ -47,8 +47,6 @@ sourceSets { runtimeJar() -dist() - testsJar() projectTest { diff --git a/plugins/android-extensions/android-extensions-idea/build.gradle.kts b/plugins/android-extensions/android-extensions-idea/build.gradle.kts index 132e407b027..d3de58e0ac6 100644 --- a/plugins/android-extensions/android-extensions-idea/build.gradle.kts +++ b/plugins/android-extensions/android-extensions-idea/build.gradle.kts @@ -75,7 +75,7 @@ sourceSets { testsJar {} projectTest(parallel = true) { - dependsOn(":kotlin-android-extensions-runtime:dist") + dependsOn(":dist") workingDir = rootDir useAndroidSdk() useAndroidJar() diff --git a/plugins/android-extensions/android-extensions-runtime/build.gradle.kts b/plugins/android-extensions/android-extensions-runtime/build.gradle.kts index ec128dc4c3c..848ee98aa31 100644 --- a/plugins/android-extensions/android-extensions-runtime/build.gradle.kts +++ b/plugins/android-extensions/android-extensions-runtime/build.gradle.kts @@ -22,5 +22,3 @@ publish() runtimeJar() sourcesJar() javadocJar() - -dist(targetName = "android-extensions-runtime.jar") diff --git a/plugins/imports-dumper/build.gradle.kts b/plugins/imports-dumper/build.gradle.kts index cbb99fcb0ff..4ac766ce378 100644 --- a/plugins/imports-dumper/build.gradle.kts +++ b/plugins/imports-dumper/build.gradle.kts @@ -35,5 +35,3 @@ projectTest { } runtimeJar() - -dist() \ No newline at end of file diff --git a/plugins/jvm-abi-gen/build.gradle.kts b/plugins/jvm-abi-gen/build.gradle.kts index 2cb39e74ce0..e9e7d1e4c98 100644 --- a/plugins/jvm-abi-gen/build.gradle.kts +++ b/plugins/jvm-abi-gen/build.gradle.kts @@ -39,6 +39,5 @@ publish() sourcesJar() javadocJar() -dist() testsJar() \ No newline at end of file diff --git a/plugins/kapt3/kapt3-cli/build.gradle.kts b/plugins/kapt3/kapt3-cli/build.gradle.kts index 0f01d92dd27..f3b8a6b6610 100644 --- a/plugins/kapt3/kapt3-cli/build.gradle.kts +++ b/plugins/kapt3/kapt3-cli/build.gradle.kts @@ -18,9 +18,7 @@ sourceSets { "test" { projectDefault() } } -testsJar {} - -dist() +testsJar() projectTest { workingDir = rootDir diff --git a/plugins/kapt3/kapt3-compiler/build.gradle.kts b/plugins/kapt3/kapt3-compiler/build.gradle.kts index 5cfee2b47e2..924288de85d 100644 --- a/plugins/kapt3/kapt3-compiler/build.gradle.kts +++ b/plugins/kapt3/kapt3-compiler/build.gradle.kts @@ -60,5 +60,3 @@ runtimeJar() sourcesJar() javadocJar() - -dist() diff --git a/plugins/kapt3/kapt3-runtime/build.gradle.kts b/plugins/kapt3/kapt3-runtime/build.gradle.kts index 7cb0aaac6a1..b720973b74b 100644 --- a/plugins/kapt3/kapt3-runtime/build.gradle.kts +++ b/plugins/kapt3/kapt3-runtime/build.gradle.kts @@ -21,5 +21,3 @@ publish() runtimeJar() sourcesJar() javadocJar() - -dist(targetName = "kotlin-annotation-processing-runtime.jar") diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts b/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts index b29c8e405c4..7f490eda7bc 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts @@ -36,9 +36,7 @@ sourceSets { runtimeJar() sourcesJar() javadocJar() -testsJar {} - -dist(targetName = the().archivesBaseName + ".jar") +testsJar() projectTest(parallel = true) { workingDir = rootDir diff --git a/plugins/noarg/noarg-cli/build.gradle.kts b/plugins/noarg/noarg-cli/build.gradle.kts index 8e81f9da9b4..f857184eb36 100644 --- a/plugins/noarg/noarg-cli/build.gradle.kts +++ b/plugins/noarg/noarg-cli/build.gradle.kts @@ -34,8 +34,6 @@ runtimeJar() testsJar() -dist(targetName = the().archivesBaseName.removePrefix("kotlin-") + ".jar") - projectTest(parallel = true) { workingDir = rootDir } diff --git a/plugins/sam-with-receiver/sam-with-receiver-cli/build.gradle.kts b/plugins/sam-with-receiver/sam-with-receiver-cli/build.gradle.kts index 8ecc10d4894..20bc38810e8 100644 --- a/plugins/sam-with-receiver/sam-with-receiver-cli/build.gradle.kts +++ b/plugins/sam-with-receiver/sam-with-receiver-cli/build.gradle.kts @@ -34,13 +34,9 @@ publish() runtimeJar() sourcesJar() javadocJar() -testsJar {} - -dist { - rename("kotlin-", "") -} +testsJar() projectTest(parallel = true) { - dependsOn(":kotlin-stdlib:jvm-minimal-for-test:dist") + dependsOn(":dist") workingDir = rootDir } diff --git a/plugins/scripting/scripting-compiler-impl/build.gradle.kts b/plugins/scripting/scripting-compiler-impl/build.gradle.kts index 1558098acb7..5bcefc57bc2 100644 --- a/plugins/scripting/scripting-compiler-impl/build.gradle.kts +++ b/plugins/scripting/scripting-compiler-impl/build.gradle.kts @@ -50,8 +50,6 @@ runtimeJar() sourcesJar() javadocJar() -dist() - projectTest { workingDir = rootDir } diff --git a/plugins/scripting/scripting-compiler/build.gradle.kts b/plugins/scripting/scripting-compiler/build.gradle.kts index 116c5aff23a..d6feec8c83c 100644 --- a/plugins/scripting/scripting-compiler/build.gradle.kts +++ b/plugins/scripting/scripting-compiler/build.gradle.kts @@ -47,12 +47,10 @@ tasks.withType> { publish() -val jar = runtimeJar {} +runtimeJar() sourcesJar() javadocJar() -dist() - projectTest { workingDir = rootDir } diff --git a/plugins/source-sections/source-sections-compiler/build.gradle.kts b/plugins/source-sections/source-sections-compiler/build.gradle.kts index f1d56f821d9..36aee379af9 100644 --- a/plugins/source-sections/source-sections-compiler/build.gradle.kts +++ b/plugins/source-sections/source-sections-compiler/build.gradle.kts @@ -47,5 +47,3 @@ publish() runtimeJar() sourcesJar() javadocJar() - -dist() diff --git a/prepare/build.version/build.gradle.kts b/prepare/build.version/build.gradle.kts index 34342dfd7f9..ac89d89fcc8 100644 --- a/prepare/build.version/build.gradle.kts +++ b/prepare/build.version/build.gradle.kts @@ -1,8 +1,8 @@ +@file:Suppress("HasPlatformType") import java.io.File -val buildVersionFilePath = "${rootProject.extra["distDir"]}/build.txt" - +val buildVersionFilePath = "$buildDir/build.txt" val buildVersion by configurations.creating val buildNumber: String by rootProject.extra val kotlinVersion: String by rootProject.extra @@ -17,6 +17,10 @@ val writeBuildNumber by tasks.creating { } } +artifacts.add(buildVersion.name, file(buildVersionFilePath)) { + builtBy(writeBuildNumber) +} + fun replaceVersion(versionFile: File, versionPattern: String, replacement: (MatchResult) -> String) { check(versionFile.isFile) { "Version file $versionFile is not found" } val text = versionFile.readText() @@ -69,15 +73,3 @@ val writePluginVersion by tasks.creating { val writeVersions by tasks.creating { dependsOn(writeBuildNumber, writeStdlibVersion, writeCompilerVersion) } - - -artifacts.add(buildVersion.name, file(buildVersionFilePath)) { - builtBy(writeBuildNumber) -} - -val distKotlinHomeDir: String by rootProject.extra - -val dist by task { - from(writeBuildNumber) - into(File(distKotlinHomeDir)) -} diff --git a/prepare/compiler-client-embeddable/build.gradle.kts b/prepare/compiler-client-embeddable/build.gradle.kts index c274a520a10..f3fbd1f37c7 100644 --- a/prepare/compiler-client-embeddable/build.gradle.kts +++ b/prepare/compiler-client-embeddable/build.gradle.kts @@ -36,9 +36,7 @@ sourceSets { } projectTest { - dependsOn(":kotlin-compiler:dist", - ":kotlin-stdlib:dist", - ":kotlin-script-runtime:dist") + dependsOn(":dist") workingDir = File(rootDir, "libraries/tools/kotlin-compiler-client-embeddable-test/src") doFirst { systemProperty("kotlin.test.script.classpath", testSourceSet.output.classesDirs.joinToString(File.pathSeparator)) diff --git a/prepare/compiler/build.gradle.kts b/prepare/compiler/build.gradle.kts index 8e410486092..06a7fdff047 100644 --- a/prepare/compiler/build.gradle.kts +++ b/prepare/compiler/build.gradle.kts @@ -1,5 +1,8 @@ +@file:Suppress("HasPlatformType") + import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import proguard.gradle.ProGuardTask +import java.util.regex.Pattern.quote description = "Kotlin Compiler" @@ -12,21 +15,30 @@ plugins { // You can run Gradle with "-Pkotlin.build.proguard=true" to enable ProGuard run on kotlin-compiler.jar (on TeamCity, ProGuard always runs) val shrink = findProperty("kotlin.build.proguard")?.toString()?.toBoolean() ?: hasProperty("teamcity") +val jsIrDist = findProperty("kotlin.stdlib.js.ir.dist")?.toString()?.toBoolean() == true + val fatJarContents by configurations.creating val fatJarContentsStripMetadata by configurations.creating val fatJarContentsStripServices by configurations.creating val runtimeJar by configurations.creating val compile by configurations // maven plugin writes pom compile scope from compile configuration by default -val libraries by configurations.creating { +val proguardLibraries by configurations.creating { extendsFrom(compile) } -val trove4jJar by configurations.creating -val ktorNetworkJar by configurations.creating - -val default by configurations -default.extendsFrom(runtimeJar) +// Libraries to copy to the lib directory +val libraries by configurations.creating +// Compiler plugins should be copied without `kotlin-` prefix +val compilerPlugins by configurations.creating +val sources by configurations.creating +// contents of dist/maven directory +val distMavenContents by configurations.creating +// contents of dist/common directory +val distCommonContents by configurations.creating +val distStdlibMinimalForTests by configurations.creating +val buildNumber by configurations.creating +val distJSContents by configurations.creating val compilerBaseName = name @@ -34,14 +46,78 @@ val outputJar = fileFrom(buildDir, "libs", "$compilerBaseName.jar") val compilerModules: Array by rootProject.extra +val distLibraryProjects = listOfNotNull( + ":kotlin-annotation-processing", + ":kotlin-annotation-processing-cli", + ":kotlin-annotation-processing-runtime", + ":kotlin-annotations-android", + ":kotlin-annotations-jvm", + ":kotlin-ant", + ":kotlin-daemon", + ":kotlin-daemon-client", + ":kotlin-daemon-client-new", + ":kotlin-imports-dumper-compiler-plugin", + ":kotlin-main-kts", + ":kotlin-preloader", + ":kotlin-reflect", + ":kotlin-runner", + ":kotlin-script-runtime", + ":kotlin-scripting-common", + ":kotlin-scripting-compiler", + ":kotlin-scripting-compiler-impl", + ":kotlin-scripting-jvm", + ":kotlin-stdlib-js-ir".takeIf { jsIrDist }, + ":kotlin-source-sections-compiler-plugin", + ":kotlin-test:kotlin-test-js", + ":kotlin-test:kotlin-test-js-ir".takeIf { jsIrDist }, + ":kotlin-test:kotlin-test-junit", + ":kotlin-test:kotlin-test-junit5", + ":kotlin-test:kotlin-test-jvm", + ":kotlin-test:kotlin-test-testng", + ":libraries:tools:mutability-annotations-compat", + ":plugins:android-extensions-compiler", + ":plugins:jvm-abi-gen" +) + +val distCompilerPluginProjects = listOf( + ":kotlin-allopen-compiler-plugin", + ":kotlin-android-extensions-runtime", + ":kotlin-noarg-compiler-plugin", + ":kotlin-sam-with-receiver-compiler-plugin", + ":kotlinx-serialization-compiler-plugin" +) + +val distSourcesProjects = listOfNotNull( + ":kotlin-annotations-jvm", + ":kotlin-reflect", + ":kotlin-script-runtime", + ":kotlin-stdlib-jdk7".takeIf { !kotlinBuildProperties.isInJpsBuildIdeaSync }, + ":kotlin-stdlib-jdk8".takeIf { !kotlinBuildProperties.isInJpsBuildIdeaSync }, + ":kotlin-stdlib-js-ir".takeIf { jsIrDist }, + ":kotlin-test:kotlin-test-js", + ":kotlin-test:kotlin-test-js-ir".takeIf { jsIrDist }, + ":kotlin-test:kotlin-test-junit", + ":kotlin-test:kotlin-test-junit5", + ":kotlin-test:kotlin-test-jvm", + ":kotlin-test:kotlin-test-testng" +) + +libraries.apply { + resolutionStrategy { + preferProjectModules() + } + + exclude("org.jetbrains.kotlin", "kotlin-stdlib-common") +} + dependencies { compile(kotlinStdlib()) compile(project(":kotlin-script-runtime")) compile(project(":kotlin-reflect")) compile(commonDep("org.jetbrains.intellij.deps", "trove4j")) - libraries(project(":kotlin-annotations-jvm")) - libraries( + proguardLibraries(project(":kotlin-annotations-jvm")) + proguardLibraries( files( firstFromJavaHomeThatExists("jre/lib/rt.jar", "../Classes/classes.jar"), firstFromJavaHomeThatExists("jre/lib/jsse.jar", "../Classes/jsse.jar"), @@ -53,8 +129,39 @@ dependencies { fatJarContents(project(it)) { isTransitive = false } } - trove4jJar(intellijDep()) { includeIntellijCoreJarDependencies(project) { it.startsWith("trove4j") } } - ktorNetworkJar(commonDep("io.ktor", "ktor-network")) + libraries(intellijDep()) { includeIntellijCoreJarDependencies(project) { it.startsWith("trove4j") } } + libraries(commonDep("io.ktor", "ktor-network")) + libraries(kotlinStdlib("jdk8")) + libraries(kotlinStdlib("js")) + + distLibraryProjects.forEach { + libraries(project(it)) { isTransitive = false } + } + + distCompilerPluginProjects.forEach { + compilerPlugins(project(it)) { isTransitive = false } + } + + distSourcesProjects.forEach { + sources(project(it, configuration = "sources")) + } + + if (!kotlinBuildProperties.isInJpsBuildIdeaSync) { + sources(project(":kotlin-stdlib", configuration = "distSources")) + sources(project(":kotlin-stdlib-js", configuration = "distSources")) + + distStdlibMinimalForTests(project(":kotlin-stdlib:jvm-minimal-for-test")) + + distJSContents(project(":kotlin-stdlib-js", configuration = "distJs")) + distJSContents(project(":kotlin-test:kotlin-test-js", configuration = "distJs")) + } + + distCommonContents(kotlinStdlib(suffix = "common")) + distCommonContents(kotlinStdlib(suffix = "common", classifier = "sources")) + + distMavenContents(kotlinStdlib(classifier = "sources")) + + buildNumber(project(":prepare:build.version", configuration = "buildVersion")) fatJarContents(kotlinBuiltins()) fatJarContents(commonDep("javax.inject")) @@ -96,7 +203,7 @@ noDefaultJar() val packCompiler by task { configurations = emptyList() duplicatesStrategy = DuplicatesStrategy.EXCLUDE - destinationDir = File(buildDir, "libs") + destinationDirectory.set(File(buildDir, "libs")) setupPublicJar(compilerBaseName, "before-proguard") @@ -129,7 +236,7 @@ val proguard by task { inputs.files(packCompiler.outputs.files.singleFile) outputs.file(outputJar) - libraryjars(mapOf("filter" to "!META-INF/versions/**"), libraries) + libraryjars(mapOf("filter" to "!META-INF/versions/**"), proguardLibraries) printconfiguration("$buildDir/compiler.pro.dump") @@ -142,9 +249,56 @@ val proguard by task { val pack = if (shrink) proguard else packCompiler -dist(targetName = "$compilerBaseName.jar", fromTask = pack) { - from(trove4jJar) - from(ktorNetworkJar) +val distDir: String by rootProject.extra + +val distKotlinc = distTask("distKotlinc") { + destinationDir = File("$distDir/kotlinc") + + from(buildNumber) + + into("bin") { + from(files("$rootDir/compiler/cli/bin")) + } + + into("license") { + from(files("$rootDir/license")) + } + + into("lib") { + from(pack) { rename { "$compilerBaseName.jar" } } + from(libraries) + from(sources) + from(compilerPlugins) { + rename { it.removePrefix("kotlin-") } + } + } +} + +val distCommon = distTask("distCommon") { + destinationDir = File("$distDir/common") + from(distCommonContents) +} + +val distMaven = distTask("distMaven") { + destinationDir = File("$distDir/maven") + from(distMavenContents) +} + +val distJs = distTask("distJs") { + destinationDir = File("$distDir/js") + from(distJSContents) +} + +distTask("dist") { + destinationDir = File(distDir) + + dependsOn(distKotlinc) + dependsOn(distCommon) + dependsOn(distMaven) + dependsOn(distJs) + + from(buildNumber) + from(distStdlibMinimalForTests) } runtimeJarArtifactBy(pack, pack.outputs.files.singleFile) { @@ -161,3 +315,12 @@ sourcesJar { } javadocJar() + +inline fun Project.distTask( + name: String, + crossinline block: T.() -> Unit +) = tasks.register(name) { + duplicatesStrategy = DuplicatesStrategy.FAIL + rename(quote("-$version"), "") + block() +} \ No newline at end of file