[Gradle, JS] Use default configuration names only once in constants

This commit is contained in:
Ilya Goncharov
2020-02-18 16:36:43 +03:00
parent d9c08945a3
commit f3f818edc3
7 changed files with 78 additions and 50 deletions
@@ -31,6 +31,8 @@ import org.jetbrains.kotlin.gradle.plugin.JsCompilerType
import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
import org.jetbrains.kotlin.gradle.utils.COMPILE
import org.jetbrains.kotlin.gradle.utils.RUNTIME
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import java.util.concurrent.Callable import java.util.concurrent.Callable
import kotlin.reflect.KMutableProperty1 import kotlin.reflect.KMutableProperty1
@@ -325,10 +327,10 @@ abstract class AbstractKotlinTargetConfigurator<KotlinTargetType : KotlinTarget>
} }
internal val KotlinCompilation<*>.deprecatedCompileConfigurationName: String internal val KotlinCompilation<*>.deprecatedCompileConfigurationName: String
get() = disambiguateName("compile") get() = disambiguateName(COMPILE)
internal val KotlinCompilationToRunnableFiles<*>.deprecatedRuntimeConfigurationName: String internal val KotlinCompilationToRunnableFiles<*>.deprecatedRuntimeConfigurationName: String
get() = disambiguateName("runtime") get() = disambiguateName(RUNTIME)
internal val KotlinTarget.testTaskName: String internal val KotlinTarget.testTaskName: String
get() = lowerCamelCaseName(targetName, AbstractKotlinTargetConfigurator.testTaskNameSuffix) get() = lowerCamelCaseName(targetName, AbstractKotlinTargetConfigurator.testTaskNameSuffix)
@@ -1,7 +1,7 @@
/* /*
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
package org.jetbrains.kotlin.gradle.plugin.mpp package org.jetbrains.kotlin.gradle.plugin.mpp
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation
import org.jetbrains.kotlin.gradle.utils.archivePathCompatible import org.jetbrains.kotlin.gradle.utils.archivePathCompatible
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import java.io.File import java.io.File
import org.jetbrains.kotlin.gradle.utils.*
import java.util.* import java.util.*
import java.util.concurrent.Callable import java.util.concurrent.Callable
@@ -182,16 +183,16 @@ abstract class AbstractKotlinCompilation<T : KotlinCommonOptions>(
override lateinit var compileDependencyFiles: FileCollection override lateinit var compileDependencyFiles: FileCollection
override val apiConfigurationName: String override val apiConfigurationName: String
get() = disambiguateName("api") get() = disambiguateName(API)
override val implementationConfigurationName: String override val implementationConfigurationName: String
get() = disambiguateName("implementation") get() = disambiguateName(IMPLEMENTATION)
override val compileOnlyConfigurationName: String override val compileOnlyConfigurationName: String
get() = disambiguateName("compileOnly") get() = disambiguateName(COMPILE_ONLY)
override val runtimeOnlyConfigurationName: String override val runtimeOnlyConfigurationName: String
get() = disambiguateName("runtimeOnly") get() = disambiguateName(RUNTIME_ONLY)
override fun dependencies(configure: KotlinDependencyHandler.() -> Unit): Unit = override fun dependencies(configure: KotlinDependencyHandler.() -> Unit): Unit =
DefaultKotlinDependencyHandler(this, target.project).run(configure) DefaultKotlinDependencyHandler(this, target.project).run(configure)
@@ -255,24 +256,24 @@ abstract class AbstractKotlinCompilation<T : KotlinCommonOptions>(
get() = Collections.unmodifiableList(_associateWith.toList()) get() = Collections.unmodifiableList(_associateWith.toList())
} }
internal val KotlinCompilation<*>.ownModuleName: String internal val KotlinCompilation<*>.ownModuleName: String
get() { get() {
val project = target.project val project = target.project
val baseName = project.convention.findPlugin(BasePluginConvention::class.java)?.archivesBaseName val baseName = project.convention.findPlugin(BasePluginConvention::class.java)?.archivesBaseName
?: project.name ?: project.name
val suffix = if (compilationName == KotlinCompilation.MAIN_COMPILATION_NAME) "" else "_$compilationName" val suffix = if (compilationName == KotlinCompilation.MAIN_COMPILATION_NAME) "" else "_$compilationName"
return filterModuleName("$baseName$suffix") return filterModuleName("$baseName$suffix")
} }
internal val KotlinCompilation<*>.associateWithTransitiveClosure: Iterable<KotlinCompilation<*>> internal val KotlinCompilation<*>.associateWithTransitiveClosure: Iterable<KotlinCompilation<*>>
get() = mutableSetOf<KotlinCompilation<*>>().apply { get() = mutableSetOf<KotlinCompilation<*>>().apply {
fun visit(other: KotlinCompilation<*>) { fun visit(other: KotlinCompilation<*>) {
if (add(other)) { if (add(other)) {
other.associateWith.forEach(::visit) other.associateWith.forEach(::visit)
} }
} }
associateWith.forEach(::visit) associateWith.forEach(::visit)
} }
abstract class AbstractKotlinCompilationToRunnableFiles<T : KotlinCommonOptions>( abstract class AbstractKotlinCompilationToRunnableFiles<T : KotlinCommonOptions>(
target: KotlinTarget, target: KotlinTarget,
@@ -296,7 +297,7 @@ internal fun KotlinCompilation<*>.disambiguateName(simpleName: String): String {
) )
} }
private typealias CompilationsBySourceSet = Map<KotlinSourceSet, Set<KotlinCompilation<*>>> private typealias CompilationsBySourceSet = Map<KotlinSourceSet, Set<KotlinCompilation<*>>>
internal object CompilationSourceSetUtil { internal object CompilationSourceSetUtil {
private const val EXT_NAME = "kotlin.compilations.bySourceSets" private const val EXT_NAME = "kotlin.compilations.bySourceSets"
@@ -16,11 +16,11 @@ import org.jetbrains.kotlin.build.DEFAULT_KOTLIN_SOURCE_FILES_EXTENSIONS
import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder
import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.mpp.DefaultKotlinDependencyHandler
import org.jetbrains.kotlin.gradle.plugin.mpp.GranularMetadataTransformation import org.jetbrains.kotlin.gradle.plugin.mpp.GranularMetadataTransformation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinProjectStructureMetadata
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast import org.jetbrains.kotlin.gradle.utils.*
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import java.io.File import java.io.File
import java.lang.reflect.Constructor import java.lang.reflect.Constructor
import java.util.* import java.util.*
@@ -34,16 +34,16 @@ class DefaultKotlinSourceSet(
) : KotlinSourceSet { ) : KotlinSourceSet {
override val apiConfigurationName: String override val apiConfigurationName: String
get() = disambiguateName("api") get() = disambiguateName(API)
override val implementationConfigurationName: String override val implementationConfigurationName: String
get() = disambiguateName("implementation") get() = disambiguateName(IMPLEMENTATION)
override val compileOnlyConfigurationName: String override val compileOnlyConfigurationName: String
get() = disambiguateName("compileOnly") get() = disambiguateName(COMPILE_ONLY)
override val runtimeOnlyConfigurationName: String override val runtimeOnlyConfigurationName: String
get() = disambiguateName("runtimeOnly") get() = disambiguateName(RUNTIME_ONLY)
override val apiMetadataConfigurationName: String override val apiMetadataConfigurationName: String
get() = lowerCamelCaseName(apiConfigurationName, METADATA_CONFIGURATION_NAME_SUFFIX) get() = lowerCamelCaseName(apiConfigurationName, METADATA_CONFIGURATION_NAME_SUFFIX)
@@ -9,12 +9,16 @@ import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.Configuration
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope.* import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope.*
import org.jetbrains.kotlin.gradle.utils.API
import org.jetbrains.kotlin.gradle.utils.COMPILE_ONLY
import org.jetbrains.kotlin.gradle.utils.IMPLEMENTATION
import org.jetbrains.kotlin.gradle.utils.RUNTIME_ONLY
internal enum class KotlinDependencyScope(val scopeName: String) { internal enum class KotlinDependencyScope(val scopeName: String) {
API_SCOPE("api"), API_SCOPE(API),
IMPLEMENTATION_SCOPE("implementation"), IMPLEMENTATION_SCOPE(IMPLEMENTATION),
COMPILE_ONLY_SCOPE("compileOnly"), COMPILE_ONLY_SCOPE(COMPILE_ONLY),
RUNTIME_ONLY_SCOPE("runtimeOnly") RUNTIME_ONLY_SCOPE(RUNTIME_ONLY)
} }
internal fun Project.sourceSetDependencyConfigurationByScope(sourceSet: KotlinSourceSet, scope: KotlinDependencyScope): Configuration = internal fun Project.sourceSetDependencyConfigurationByScope(sourceSet: KotlinSourceSet, scope: KotlinDependencyScope): Configuration =
@@ -13,9 +13,16 @@ import org.gradle.api.invocation.Gradle
import org.gradle.api.logging.Logging import org.gradle.api.logging.Logging
import org.gradle.initialization.BuildRequestMetaData import org.gradle.initialization.BuildRequestMetaData
import org.gradle.invocation.DefaultGradle import org.gradle.invocation.DefaultGradle
import org.jetbrains.kotlin.gradle.utils.API
import org.jetbrains.kotlin.gradle.utils.COMPILE
import org.jetbrains.kotlin.gradle.utils.IMPLEMENTATION
import org.jetbrains.kotlin.gradle.utils.RUNTIME
import org.jetbrains.kotlin.statistics.BuildSessionLogger import org.jetbrains.kotlin.statistics.BuildSessionLogger
import org.jetbrains.kotlin.statistics.BuildSessionLogger.Companion.STATISTICS_FOLDER_NAME import org.jetbrains.kotlin.statistics.BuildSessionLogger.Companion.STATISTICS_FOLDER_NAME
import org.jetbrains.kotlin.statistics.metrics.* import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics
import org.jetbrains.kotlin.statistics.metrics.IStatisticsValuesConsumer
import org.jetbrains.kotlin.statistics.metrics.NumericalMetrics
import org.jetbrains.kotlin.statistics.metrics.StringMetrics
import java.io.File import java.io.File
import java.lang.management.ManagementFactory import java.lang.management.ManagementFactory
import javax.management.MBeanServer import javax.management.MBeanServer
@@ -219,7 +226,8 @@ internal class DefaultKotlinBuildStatsService internal constructor(
StringMetrics.KOTLIN_REFLECT_VERSION, StringMetrics.KOTLIN_REFLECT_VERSION,
dependency.version ?: "0.0.0" dependency.version ?: "0.0.0"
) )
dependency.group == "org.jetbrains.kotlinx" && dependency.name.startsWith("kotlinx-serialization-runtime") -> sessionLogger.report( dependency.group == "org.jetbrains.kotlinx" && dependency.name
.startsWith("kotlinx-serialization-runtime") -> sessionLogger.report(
StringMetrics.KOTLIN_SERIALIZATION_VERSION, StringMetrics.KOTLIN_SERIALIZATION_VERSION,
dependency.version ?: "0.0.0" dependency.version ?: "0.0.0"
) )
@@ -269,19 +277,19 @@ internal class DefaultKotlinBuildStatsService internal constructor(
} }
} }
} }
"api" -> { API -> {
sessionLogger.report(NumericalMetrics.CONFIGURATION_API_COUNT, 1) sessionLogger.report(NumericalMetrics.CONFIGURATION_API_COUNT, 1)
reportLibrariesVersions(dependencies) reportLibrariesVersions(dependencies)
} }
"implementation" -> { IMPLEMENTATION -> {
sessionLogger.report(NumericalMetrics.CONFIGURATION_IMPLEMENTATION_COUNT, 1) sessionLogger.report(NumericalMetrics.CONFIGURATION_IMPLEMENTATION_COUNT, 1)
reportLibrariesVersions(dependencies) reportLibrariesVersions(dependencies)
} }
"compile" -> { COMPILE -> {
sessionLogger.report(NumericalMetrics.CONFIGURATION_COMPILE_COUNT, 1) sessionLogger.report(NumericalMetrics.CONFIGURATION_COMPILE_COUNT, 1)
reportLibrariesVersions(dependencies) reportLibrariesVersions(dependencies)
} }
"runtime" -> { RUNTIME -> {
sessionLogger.report(NumericalMetrics.CONFIGURATION_RUNTIME_COUNT, 1) sessionLogger.report(NumericalMetrics.CONFIGURATION_RUNTIME_COUNT, 1)
reportLibrariesVersions(dependencies) reportLibrariesVersions(dependencies)
} }
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.*
open class KotlinJsCompilation( open class KotlinJsCompilation(
target: KotlinTarget, target: KotlinTarget,
@@ -35,16 +35,16 @@ open class KotlinJsCompilation(
} }
override val apiConfigurationName: String override val apiConfigurationName: String
get() = disambiguateNameInPlatform("api") get() = disambiguateNameInPlatform(API)
override val implementationConfigurationName: String override val implementationConfigurationName: String
get() = disambiguateNameInPlatform("implementation") get() = disambiguateNameInPlatform(IMPLEMENTATION)
override val compileOnlyConfigurationName: String override val compileOnlyConfigurationName: String
get() = disambiguateNameInPlatform("compileOnly") get() = disambiguateNameInPlatform(COMPILE_ONLY)
override val runtimeOnlyConfigurationName: String override val runtimeOnlyConfigurationName: String
get() = disambiguateNameInPlatform("runtimeOnly") get() = disambiguateNameInPlatform(RUNTIME_ONLY)
protected open val disambiguationClassifierInPlatform: String? protected open val disambiguationClassifierInPlatform: String?
get() = (target as KotlinJsTarget).disambiguationClassifierInPlatform get() = (target as KotlinJsTarget).disambiguationClassifierInPlatform
@@ -0,0 +1,13 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle.utils
const val COMPILE_ONLY = "compileOnly"
const val COMPILE = "compile"
const val IMPLEMENTATION = "implementation"
const val API = "api"
const val RUNTIME_ONLY = "runtimeOnly"
const val RUNTIME = "runtime"