[Gradle] Remove ':kotlin-gradle-plugin-kpm-android' module
KT-61463
This commit is contained in:
committed by
Space Team
parent
d97e8ae456
commit
e800885c03
@@ -300,7 +300,6 @@
|
||||
/libraries/tools/kotlin-gradle-plugin-idea-for-compatibility-tests/ "Kotlin Multiplatform"
|
||||
/libraries/tools/kotlin-gradle-plugin-idea-proto/ "Kotlin Multiplatform"
|
||||
/libraries/tools/kotlin-gradle-plugin-integration-tests/ "Kotlin Build Tools" "Kotlin Multiplatform"
|
||||
/libraries/tools/kotlin-gradle-plugin-kpm-android/ "Kotlin Multiplatform"
|
||||
/libraries/tools/kotlin-gradle-plugin-model/ "Kotlin Build Tools"
|
||||
/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/ Ilya.Goncharov
|
||||
/libraries/tools/kotlin-gradle-plugin-test-utils-embeddable/ "Kotlin Build Tools"
|
||||
|
||||
@@ -408,7 +408,6 @@ val gradlePluginProjects = listOf(
|
||||
":kotlin-gradle-plugin-annotations",
|
||||
":kotlin-gradle-plugin-idea",
|
||||
":kotlin-gradle-plugin-idea-proto",
|
||||
":kotlin-gradle-plugin-kpm-android",
|
||||
":kotlin-gradle-plugin-model",
|
||||
":kotlin-gradle-plugin-tcs-android",
|
||||
":kotlin-allopen",
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
plugins {
|
||||
kotlin("jvm")
|
||||
`java-gradle-plugin`
|
||||
`maven-publish`
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(gradleKotlinDsl())
|
||||
compileOnly("com.android.tools.build:gradle:7.0.0")
|
||||
compileOnly(project(":kotlin-gradle-plugin"))
|
||||
compileOnly(project(":kotlin-gradle-plugin-idea"))
|
||||
}
|
||||
|
||||
gradlePlugin {
|
||||
plugins {
|
||||
create("kotlinAndroidKpmPlugin") {
|
||||
id = "kotlin-kpm-android"
|
||||
implementationClass = "org.jetbrains.kotlin.gradle.android.KotlinAndroidKpmPlugin"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* This module is just for local development / prototyping and demos */
|
||||
if (!kotlinBuildProperties.isTeamcityBuild) {
|
||||
tasks.register("install") {
|
||||
dependsOn(tasks.named("publishToMavenLocal"))
|
||||
}
|
||||
}
|
||||
-21
@@ -1,21 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2022 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.android
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
||||
import org.jetbrains.kotlin.tooling.core.extrasKeyOf
|
||||
import java.io.File
|
||||
import java.io.Serializable
|
||||
|
||||
internal val androidDslKey = extrasKeyOf<AndroidDsl>()
|
||||
val GradleKpmFragment.androidDsl: AndroidDsl? get() = this.extras[androidDslKey]
|
||||
|
||||
class AndroidDsl : Serializable {
|
||||
var compileSdk = 0
|
||||
var isMinifyEnabled: Boolean = false
|
||||
var androidManifest: File? = null
|
||||
}
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2022 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.android
|
||||
|
||||
import com.android.build.gradle.BaseExtension
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.kotlin.dsl.getByType
|
||||
import java.util.concurrent.Callable
|
||||
|
||||
internal fun Project.getAndroidRuntimeJars(): FileCollection {
|
||||
return project.files(Callable { project.extensions.getByType<BaseExtension>().bootClasspath })
|
||||
}
|
||||
-39
@@ -1,39 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2021 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.
|
||||
*/
|
||||
|
||||
@file:Suppress("DEPRECATION")
|
||||
@file:OptIn(ExternalVariantApi::class)
|
||||
|
||||
package org.jetbrains.kotlin.gradle.android
|
||||
|
||||
import com.android.build.gradle.AppExtension
|
||||
import com.android.build.gradle.LibraryExtension
|
||||
import org.gradle.kotlin.dsl.findByType
|
||||
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializer
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.ideaKpmProjectModelBuilder
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.project
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.registerExtrasSerializationExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
|
||||
|
||||
fun KotlinPm20ProjectExtension.androidPrototype() {
|
||||
project.extensions.findByType<AppExtension>()?.applicationVariants?.all { androidVariant ->
|
||||
main { createKotlinAndroidVariant(androidVariant) }
|
||||
test { createKotlinAndroidVariant(androidVariant.unitTestVariant ?: return@test) }
|
||||
instrumentedTest { createKotlinAndroidVariant(androidVariant.testVariant ?: return@instrumentedTest) }
|
||||
}
|
||||
|
||||
project.extensions.findByType<LibraryExtension>()?.libraryVariants?.all { androidVariant ->
|
||||
main { createKotlinAndroidVariant(androidVariant) }
|
||||
test { createKotlinAndroidVariant(androidVariant.unitTestVariant ?: return@test) }
|
||||
instrumentedTest { createKotlinAndroidVariant(androidVariant.testVariant ?: return@instrumentedTest) }
|
||||
}
|
||||
|
||||
setupIdeaKpmFragmentDependencyResolver()
|
||||
|
||||
ideaKpmProjectModelBuilder.registerExtrasSerializationExtension {
|
||||
register(androidDslKey, IdeaKotlinExtrasSerializer.javaIoSerializable())
|
||||
}
|
||||
}
|
||||
-91
@@ -1,91 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2022 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.android
|
||||
|
||||
import com.android.build.gradle.internal.publishing.AndroidArtifacts
|
||||
import org.gradle.api.attributes.Usage
|
||||
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.project
|
||||
import org.jetbrains.kotlin.gradle.idea.kpm.IdeaKpmDependency.Companion.CLASSPATH_BINARY_TYPE
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmProjectModelBuilder.FragmentConstraint
|
||||
import org.jetbrains.kotlin.gradle.idea.kpm.IdeaKpmResolvedBinaryDependencyImpl
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.configureIdeaKpmSpecialPlatformDependencyResolution
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.containingVariants
|
||||
|
||||
val isAndroidFragment = FragmentConstraint { fragment ->
|
||||
fragment.containingVariants.all { variant -> variant.androidDsl != null }
|
||||
}
|
||||
|
||||
val isAndroidAndJvmSharedFragment = FragmentConstraint constraint@{ fragment ->
|
||||
val variants = fragment.containingVariants
|
||||
if (variants.any { it.platformType != KotlinPlatformType.jvm }) return@constraint false
|
||||
variants.any { it.androidDsl != null } && variants.any { it.androidDsl == null }
|
||||
}
|
||||
|
||||
@OptIn(ExternalVariantApi::class, InternalKotlinGradlePluginApi::class)
|
||||
internal fun KotlinPm20ProjectExtension.setupIdeaKpmFragmentDependencyResolver() {
|
||||
configureIdeaKpmSpecialPlatformDependencyResolution {
|
||||
|
||||
/*
|
||||
Handle android + jvm use cases:
|
||||
We do not yet support jvm based metadata compilations, therefore we do not
|
||||
expect any reasonable results coming from metadata resolution.
|
||||
We default to a 'KotlinPlatformType.jvm' resolution
|
||||
*/
|
||||
withConstraint(isAndroidAndJvmSharedFragment) {
|
||||
withPlatformResolutionAttributes {
|
||||
namedAttribute(Usage.USAGE_ATTRIBUTE, Usage.JAVA_API)
|
||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.jvm)
|
||||
}
|
||||
|
||||
artifactView(CLASSPATH_BINARY_TYPE)
|
||||
}
|
||||
|
||||
withConstraint(isAndroidFragment) {
|
||||
withPlatformResolutionAttributes {
|
||||
namedAttribute(Usage.USAGE_ATTRIBUTE, Usage.JAVA_API)
|
||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.androidJvm)
|
||||
}
|
||||
|
||||
artifactView(CLASSPATH_BINARY_TYPE) {
|
||||
attributes {
|
||||
attribute(AndroidArtifacts.ARTIFACT_TYPE, AndroidArtifacts.ArtifactType.CLASSES_JAR.type)
|
||||
}
|
||||
}
|
||||
|
||||
artifactView("manifest") {
|
||||
attributes {
|
||||
attribute(AndroidArtifacts.ARTIFACT_TYPE, AndroidArtifacts.ArtifactType.MANIFEST.type)
|
||||
}
|
||||
}
|
||||
|
||||
artifactView("resources") {
|
||||
attributes {
|
||||
attribute(AndroidArtifacts.ARTIFACT_TYPE, AndroidArtifacts.ArtifactType.ANDROID_RES.type)
|
||||
}
|
||||
}
|
||||
|
||||
artifactView("android-symbol") {
|
||||
attributes {
|
||||
attribute(AndroidArtifacts.ARTIFACT_TYPE, AndroidArtifacts.ArtifactType.COMPILE_SYMBOL_LIST.type)
|
||||
}
|
||||
}
|
||||
|
||||
additionalDependencies {
|
||||
project.getAndroidRuntimeJars().map { androidRuntimeJar ->
|
||||
IdeaKpmResolvedBinaryDependencyImpl(
|
||||
binaryType = CLASSPATH_BINARY_TYPE,
|
||||
binaryFile = androidRuntimeJar,
|
||||
coordinates = null
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-17
@@ -1,17 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2021 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.
|
||||
*/
|
||||
|
||||
@file:Suppress("unused")
|
||||
|
||||
package org.jetbrains.kotlin.gradle.android
|
||||
|
||||
import org.gradle.api.Plugin
|
||||
import org.gradle.api.Project
|
||||
|
||||
class KotlinAndroidKpmPlugin : Plugin<Project> {
|
||||
override fun apply(target: Project) {
|
||||
target.logger.quiet("Applied Kotlin/Android KPM prototype. This is just a proof of concept implementation.")
|
||||
}
|
||||
}
|
||||
-91
@@ -1,91 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2021 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.
|
||||
*/
|
||||
|
||||
@file:Suppress("DEPRECATION")
|
||||
@file:OptIn(ExternalVariantApi::class)
|
||||
|
||||
package org.jetbrains.kotlin.gradle.android
|
||||
|
||||
import com.android.build.api.attributes.BuildTypeAttr
|
||||
import com.android.build.gradle.api.BaseVariant
|
||||
import com.android.build.gradle.api.LibraryVariant
|
||||
import com.android.build.gradle.internal.publishing.AndroidArtifacts
|
||||
import org.gradle.api.attributes.java.TargetJvmEnvironment
|
||||
import org.gradle.api.attributes.java.TargetJvmEnvironment.TARGET_JVM_ENVIRONMENT_ATTRIBUTE
|
||||
import org.gradle.kotlin.dsl.named
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.createExternalJvmVariant
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
||||
|
||||
fun GradleKpmModule.createKotlinAndroidVariant(androidVariant: BaseVariant) {
|
||||
val androidOutgoingArtifacts = GradleKpmConfigurationArtifactsSetup<GradleKpmJvmVariant> {
|
||||
variants.create("classes") { variant ->
|
||||
variant.attributes.attribute(AndroidArtifacts.ARTIFACT_TYPE, AndroidArtifacts.ArtifactType.CLASSES_JAR.type)
|
||||
variant.artifact(project.provider { fragment.compilationOutputs.classesDirs.singleFile }) {
|
||||
it.builtBy(fragment.compilationOutputs.classesDirs)
|
||||
}
|
||||
}
|
||||
|
||||
if (androidVariant is LibraryVariant) {
|
||||
variants.create("aar") { variant ->
|
||||
variant.attributes.attribute(AndroidArtifacts.ARTIFACT_TYPE, AndroidArtifacts.ArtifactType.AAR.type)
|
||||
variant.artifact(androidVariant.packageLibraryProvider)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val androidElementsAttributes = GradleKpmConfigurationAttributesSetup<GradleKpmJvmVariant> {
|
||||
attribute(BuildTypeAttr.ATTRIBUTE, project.objects.named(androidVariant.buildType.name))
|
||||
attribute(TARGET_JVM_ENVIRONMENT_ATTRIBUTE, project.objects.named(TargetJvmEnvironment.ANDROID))
|
||||
}
|
||||
|
||||
val kotlinVariant = createExternalJvmVariant(
|
||||
"android${androidVariant.buildType.name.replaceFirstChar { it.uppercase() }}", GradleKpmJvmVariantConfig(
|
||||
/* Only swap out configuration that is used. Default setup shall still be applied */
|
||||
compileDependencies = (DefaultKotlinCompileDependenciesDefinition +
|
||||
GradleKpmConfigurationAttributesSetup<GradleKpmFragment> {
|
||||
namedAttribute(TARGET_JVM_ENVIRONMENT_ATTRIBUTE, TargetJvmEnvironment.ANDROID)
|
||||
attribute(KotlinPlatformType.attribute, KotlinPlatformType.androidJvm)
|
||||
})
|
||||
.withConfigurationProvider { androidVariant.compileConfiguration },
|
||||
|
||||
/* Only swap out configuration that is used. Default setup shall still be applied */
|
||||
runtimeDependencies = DefaultKotlinRuntimeDependenciesDefinition
|
||||
.withConfigurationProvider { androidVariant.runtimeConfiguration },
|
||||
|
||||
/* Add android artifacts and attributes */
|
||||
apiElements = DefaultKotlinApiElementsDefinition + androidElementsAttributes + androidOutgoingArtifacts,
|
||||
|
||||
/* Add android artifacts and attributes */
|
||||
runtimeElements = DefaultKotlinRuntimeElementsDefinition + androidElementsAttributes + androidOutgoingArtifacts,
|
||||
|
||||
/* For now: Just publish 'release' (non-debuggable) variants */
|
||||
publicationConfigurator = if (androidVariant.buildType.isDebuggable) GradleKpmPublicationConfigurator.NoPublication else
|
||||
GradleKpmPublicationConfigurator.SingleVariantPublication
|
||||
)
|
||||
)
|
||||
|
||||
// "Disable" configurations from plain Android plugin
|
||||
project.configurations.findByName("${androidVariant.name}ApiElements")?.isCanBeConsumed = false
|
||||
project.configurations.findByName("${androidVariant.name}RuntimeElements")?.isCanBeConsumed = false
|
||||
|
||||
// TODO: Move this into configurator!
|
||||
kotlinVariant.refines(androidCommon)
|
||||
|
||||
val mainBytecodeKey = androidVariant.registerPreJavacGeneratedBytecode(
|
||||
kotlinVariant.compilationOutputs.classesDirs
|
||||
)
|
||||
|
||||
kotlinVariant.compileDependencyFiles = project.files(
|
||||
androidVariant.getCompileClasspath(mainBytecodeKey),
|
||||
project.getAndroidRuntimeJars()
|
||||
)
|
||||
|
||||
val androidDsl = AndroidDsl()
|
||||
androidDsl.androidManifest = project.file("AndroidManifest.xml")
|
||||
androidDsl.compileSdk = 23
|
||||
kotlinVariant.extras[androidDslKey] = androidDsl
|
||||
}
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2021 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.android
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragmentInternal
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule
|
||||
|
||||
val GradleKpmModule.androidCommon: GradleKpmFragmentInternal
|
||||
get() = (fragments.findByName("androidCommon") ?: fragments.create("androidCommon") { fragment ->
|
||||
fragment.refines(common)
|
||||
}) as GradleKpmFragmentInternal
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2021 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.android
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
|
||||
|
||||
val KotlinPm20ProjectExtension.instrumentedTest
|
||||
get() = modules.maybeCreate("instrumentedTest")
|
||||
|
||||
fun KotlinPm20ProjectExtension.instrumentedTest(configure: GradleKpmModule.() -> Unit) {
|
||||
instrumentedTest.apply(configure)
|
||||
}
|
||||
@@ -321,7 +321,6 @@ if (!kotlinBuildProperties.isInJpsBuildIdeaSync) {
|
||||
implementation("com.android.tools.build:gradle-api:7.4.2")
|
||||
compileOnly("com.android.tools:common:30.2.1")
|
||||
implementation(gradleKotlinDsl())
|
||||
implementation(project(":kotlin-gradle-plugin-kpm-android"))
|
||||
implementation(project(":kotlin-gradle-plugin-tcs-android"))
|
||||
implementation(project(":kotlin-tooling-metadata"))
|
||||
implementation(project.dependencies.testFixtures(project(":kotlin-gradle-plugin-idea")))
|
||||
|
||||
@@ -38,7 +38,6 @@ class ArtifactsTest {
|
||||
"org.jetbrains.kotlin.gradle-subplugin-example.gradle.plugin",
|
||||
"gradle-warnings-detector",
|
||||
"kotlin-compiler-args-properties",
|
||||
"kotlin-gradle-plugin-kpm-android",
|
||||
"kotlin-gradle-plugin-tcs-android",
|
||||
"kotlin-gradle-subplugin-example",
|
||||
"kotlin-java-example",
|
||||
|
||||
@@ -34,7 +34,6 @@ fun updateCompilerXml() {
|
||||
"libraries/tools/kotlin-gradle-plugin-idea",
|
||||
"libraries/tools/kotlin-gradle-plugin-idea-for-compatibility-tests",
|
||||
"libraries/tools/kotlin-gradle-plugin-integration-tests",
|
||||
"libraries/tools/kotlin-gradle-plugin-kpm-android",
|
||||
"libraries/tools/kotlin-gradle-plugin-tcs-android",
|
||||
"libraries/tools/kotlin-gradle-plugin-model",
|
||||
"libraries/tools/kotlin-gradle-plugin-npm-versions-codegen",
|
||||
|
||||
@@ -204,7 +204,6 @@ include ":kotlin-imports-dumper-compiler-plugin",
|
||||
":kotlin-gradle-statistics",
|
||||
":kotlin-gradle-build-metrics",
|
||||
":kotlin-gradle-plugin",
|
||||
":kotlin-gradle-plugin-kpm-android",
|
||||
":kotlin-gradle-plugin-tcs-android",
|
||||
":kotlin-gradle-plugin-model",
|
||||
":kotlin-gradle-plugin-test-utils-embeddable",
|
||||
@@ -751,7 +750,6 @@ project(':kotlin-gradle-plugin-npm-versions-codegen').projectDir = "$rootDir/lib
|
||||
project(':kotlin-gradle-statistics').projectDir = "$rootDir/libraries/tools/kotlin-gradle-statistics" as File
|
||||
project(':kotlin-gradle-build-metrics').projectDir = "$rootDir/libraries/tools/kotlin-gradle-build-metrics" as File
|
||||
project(':kotlin-gradle-plugin').projectDir = "$rootDir/libraries/tools/kotlin-gradle-plugin" as File
|
||||
project(':kotlin-gradle-plugin-kpm-android').projectDir = "$rootDir/libraries/tools/kotlin-gradle-plugin-kpm-android" as File
|
||||
project(':kotlin-gradle-plugin-tcs-android').projectDir = "$rootDir/libraries/tools/kotlin-gradle-plugin-tcs-android" as File
|
||||
project(':kotlin-gradle-plugin-model').projectDir = "$rootDir/libraries/tools/kotlin-gradle-plugin-model" as File
|
||||
project(':kotlin-gradle-plugin-test-utils-embeddable').projectDir = "$rootDir/libraries/tools/kotlin-gradle-plugin-test-utils-embeddable" as File
|
||||
|
||||
Reference in New Issue
Block a user