From 9df5d53a9da7650f7c1d041f770cd6a71e96c592 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Thu, 7 Sep 2017 14:46:32 +0300 Subject: [PATCH] Add classes dirs artifact helpers, minor cleanup --- buildSrc/src/main/kotlin/artifacts.kt | 17 ++++ buildSrc/src/main/kotlin/dependencies.kt | 2 + gradle/project-schema.json | 113 ++++++++++++++++++++++- idea/build.gradle.kts | 2 + ultimate/build.gradle.kts | 8 +- 5 files changed, 130 insertions(+), 12 deletions(-) diff --git a/buildSrc/src/main/kotlin/artifacts.kt b/buildSrc/src/main/kotlin/artifacts.kt index 52e14e43c47..208afa80c83 100644 --- a/buildSrc/src/main/kotlin/artifacts.kt +++ b/buildSrc/src/main/kotlin/artifacts.kt @@ -8,12 +8,29 @@ import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.file.DuplicatesStrategy +import org.gradle.api.file.FileCollection import org.gradle.api.plugins.BasePluginConvention import org.gradle.api.plugins.JavaPluginConvention import org.gradle.api.tasks.javadoc.Javadoc import org.gradle.jvm.tasks.Jar import java.io.File +fun Project.classesDirsArtifact(): FileCollection { + val classesDirsCfg = configurations.getOrCreate("classes-dirs") + + val classesDirs = the().sourceSets["main"].output.classesDirs + + val classesTask = tasks["classes"] + + afterEvaluate { + classesDirs.files.forEach { + addArtifact(classesDirsCfg, classesTask, it) + } + } + + return classesDirs +} + fun Project.testsJar(body: Jar.() -> Unit = {}): Jar { val testsJarCfg = configurations.getOrCreate("tests-jar").extendsFrom(configurations["testCompile"]) diff --git a/buildSrc/src/main/kotlin/dependencies.kt b/buildSrc/src/main/kotlin/dependencies.kt index c74a5bea8a1..9a231f5d70f 100644 --- a/buildSrc/src/main/kotlin/dependencies.kt +++ b/buildSrc/src/main/kotlin/dependencies.kt @@ -5,6 +5,7 @@ import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.ProjectDependency import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.file.ConfigurableFileCollection +import org.gradle.api.plugins.JavaPluginConvention import org.gradle.kotlin.dsl.* import org.gradle.plugin.use.PluginDependenciesSpec import org.gradle.plugin.use.PluginDependencySpec @@ -62,6 +63,7 @@ fun DependencyHandler.projectDist(name: String): Dependency = project(name, conf fun DependencyHandler.projectTests(name: String): Dependency = project(name, configuration = "tests-jar").apply { isTransitive = false } fun DependencyHandler.projectRuntimeJar(name: String): Dependency = project(name, configuration = "runtimeJar") fun DependencyHandler.projectArchives(name: String): Dependency = project(name, configuration = "archives") +fun DependencyHandler.projectClasses(name: String): Dependency = project(name, configuration = "classes-dirs") val protobufLiteProject = ":custom-dependencies:protobuf-lite" fun DependencyHandler.protobufLite(): ProjectDependency = diff --git a/gradle/project-schema.json b/gradle/project-schema.json index 2bf512b6a47..25e0989688c 100644 --- a/gradle/project-schema.json +++ b/gradle/project-schema.json @@ -311,6 +311,7 @@ "configurations": [ "apiElements", "archives", + "classes-dirs", "compile", "compileClasspath", "compileOnly", @@ -1194,13 +1195,41 @@ }, ":kotlin-runtime": { "conventions": { - + "base": "org.gradle.api.plugins.BasePluginConvention", + "java": "org.gradle.api.plugins.JavaPluginConvention", + "maven": "org.gradle.api.plugins.MavenPluginConvention" }, "configurations": [ - + "apiElements", + "archives", + "compile", + "compileClasspath", + "compileOnly", + "default", + "distJar", + "implementation", + "kapt", + "kaptTest", + "runtime", + "runtimeClasspath", + "runtimeElements", + "runtimeOnly", + "signatures", + "testCompile", + "testCompileClasspath", + "testCompileOnly", + "testImplementation", + "testRuntime", + "testRuntimeClasspath", + "testRuntimeOnly" ], "extensions": { - "ext": "org.gradle.api.plugins.ExtraPropertiesExtension" + "ext": "org.gradle.api.plugins.ExtraPropertiesExtension", + "kotlin": "org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension", + "kapt": "org.jetbrains.kotlin.gradle.plugin.KaptExtension", + "defaultArtifacts": "org.gradle.api.internal.plugins.DefaultArtifactPublicationSet", + "reporting": "org.gradle.api.reporting.ReportingExtension", + "signing": "org.gradle.plugins.signing.SigningExtension" } }, ":kotlin-sam-with-receiver": { @@ -1740,6 +1769,44 @@ "ext": "org.gradle.api.plugins.ExtraPropertiesExtension" } }, + ":ultimate": { + "conventions": { + "base": "org.gradle.api.plugins.BasePluginConvention", + "java": "org.gradle.api.plugins.JavaPluginConvention" + }, + "configurations": [ + "apiElements", + "archives", + "buildVersion", + "compile", + "compileClasspath", + "compileOnly", + "default", + "ideaCommunityPlugin", + "implementation", + "kapt", + "kaptTest", + "runtime", + "runtimeClasspath", + "runtimeElements", + "runtimeJar", + "runtimeOnly", + "testCompile", + "testCompileClasspath", + "testCompileOnly", + "testImplementation", + "testRuntime", + "testRuntimeClasspath", + "testRuntimeOnly" + ], + "extensions": { + "ext": "org.gradle.api.plugins.ExtraPropertiesExtension", + "kotlin": "org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension", + "kapt": "org.jetbrains.kotlin.gradle.plugin.KaptExtension", + "defaultArtifacts": "org.gradle.api.internal.plugins.DefaultArtifactPublicationSet", + "reporting": "org.gradle.api.reporting.ReportingExtension" + } + }, ":compiler:android-tests": { "conventions": { "base": "org.gradle.api.plugins.BasePluginConvention", @@ -2914,7 +2981,8 @@ "testImplementation", "testRuntime", "testRuntimeClasspath", - "testRuntimeOnly" + "testRuntimeOnly", + "tests-jar" ], "extensions": { "ext": "org.gradle.api.plugins.ExtraPropertiesExtension", @@ -3019,7 +3087,8 @@ "testImplementation", "testRuntime", "testRuntimeClasspath", - "testRuntimeOnly" + "testRuntimeOnly", + "tests-jar" ], "extensions": { "ext": "org.gradle.api.plugins.ExtraPropertiesExtension", @@ -3455,6 +3524,40 @@ "signing": "org.gradle.plugins.signing.SigningExtension" } }, + ":kotlin-test:kotlin-test-js-it": { + "conventions": { + "base": "org.gradle.api.plugins.BasePluginConvention", + "java": "org.gradle.api.plugins.JavaPluginConvention" + }, + "configurations": [ + "apiElements", + "archives", + "compile", + "compileClasspath", + "compileOnly", + "default", + "implement", + "implementation", + "runtime", + "runtimeClasspath", + "runtimeElements", + "runtimeOnly", + "testCompile", + "testCompileClasspath", + "testCompileOnly", + "testImplementation", + "testRuntime", + "testRuntimeClasspath", + "testRuntimeOnly" + ], + "extensions": { + "ext": "org.gradle.api.plugins.ExtraPropertiesExtension", + "node": "com.moowork.gradle.node.NodeExtension", + "kotlin": "org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension", + "defaultArtifacts": "org.gradle.api.internal.plugins.DefaultArtifactPublicationSet", + "reporting": "org.gradle.api.reporting.ReportingExtension" + } + }, ":kotlin-test:kotlin-test-junit": { "conventions": { "base": "org.gradle.api.plugins.BasePluginConvention", diff --git a/idea/build.gradle.kts b/idea/build.gradle.kts index bfddaf1df74..624ba4af314 100644 --- a/idea/build.gradle.kts +++ b/idea/build.gradle.kts @@ -105,3 +105,5 @@ projectTest { } testsJar {} + +classesDirsArtifact() diff --git a/ultimate/build.gradle.kts b/ultimate/build.gradle.kts index 78e2fb706c3..195731cb538 100644 --- a/ultimate/build.gradle.kts +++ b/ultimate/build.gradle.kts @@ -18,15 +18,9 @@ apply { plugin("kotlin") } val ideaCommunityPlugin by configurations.creating -val ideaProjectClasses = project(":idea").the().sourceSets["main"].output.classesDirs val ideaProjectResources = project(":idea").the().sourceSets["main"].output.resourcesDir dependencies { - val compile by configurations - val compileOnly by configurations - val testCompile by configurations - val testCompileOnly by configurations - val testRuntime by configurations compile(projectDist(":kotlin-reflect")) compile(projectDist(":kotlin-stdlib")) compile(project(":core")) { isTransitive = false } @@ -34,7 +28,7 @@ dependencies { compile(project(":compiler:light-classes")) { isTransitive = false } compile(project(":compiler:frontend")) { isTransitive = false } compile(project(":compiler:frontend.java")) { isTransitive = false } - compile(ideaProjectClasses) + compile(projectClasses(":idea")) compile(project(":idea:idea-core")) { isTransitive = false } compile(project(":idea:ide-common")) { isTransitive = false } compile(project(":idea:idea-gradle")) { isTransitive = false }