diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 4a9452bd7f9..820c08bd933 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -22,6 +22,8 @@ jgit = "6.6.0.202305301015-r"
junit4 = "4.13.2"
junit5 = "5.10.0"
junit-platform = "1.10.0"
+android-gradle-plugin = "7.1.3"
+android-tools = "30.3.1"
[libraries]
dexMemberList = { module = "com.jakewharton.dex:dex-member-list", version.ref = "dexMemberList" }
@@ -64,5 +66,11 @@ junit-platform-launcher = { module = "org.junit.platform:junit-platform-launcher
junit-platform-runner = { module = "org.junit.platform:junit-platform-runner", version.ref = "junit-platform" }
junit-platform-suite-api = { module = "org.junit.platform:junit-platform-suite-api", version.ref = "junit-platform" }
+android-gradle-plugin-gradle-api = { module = "com.android.tools.build:gradle-api", version.ref = "android-gradle-plugin" }
+android-gradle-plugin-gradle = { module = "com.android.tools.build:gradle", version.ref = "android-gradle-plugin" }
+android-gradle-plugin-builder = { module = "com.android.tools.build:builder", version.ref = "android-gradle-plugin" }
+android-gradle-plugin-builder-model = { module = "com.android.tools.build:builder-model", version.ref = "android-gradle-plugin" }
+android-tools-common = { module = "com.android.tools:common", version.ref = "android-tools" }
+
[plugins]
jetbrains-ideaExt = { id = "org.jetbrains.gradle.plugin.idea-ext", version.ref = "jetbrains-ideaExt" }
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index 9587e7e970d..3ffbf5d92ca 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -136,24 +136,12 @@
-
-
-
-
-
-
-
-
-
-
-
-
@@ -172,48 +160,42 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
@@ -232,36 +214,18 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -304,12 +268,6 @@
-
-
-
-
-
-
@@ -322,12 +280,6 @@
-
-
-
-
-
-
@@ -346,10 +298,10 @@
-
-
-
-
+
+
+
+
@@ -370,10 +322,10 @@
-
-
-
-
+
+
+
+
@@ -406,10 +358,10 @@
-
-
-
-
+
+
+
+
@@ -424,10 +376,10 @@
-
-
-
-
+
+
+
+
@@ -448,12 +400,6 @@
-
-
-
-
-
-
@@ -484,12 +430,6 @@
-
-
-
-
-
-
@@ -502,12 +442,6 @@
-
-
-
-
-
-
@@ -1030,12 +964,6 @@
-
-
-
-
-
-
@@ -1480,12 +1408,6 @@
-
-
-
-
-
-
@@ -2222,12 +2144,6 @@
-
-
-
-
-
-
@@ -2588,12 +2504,6 @@
-
-
-
-
-
-
@@ -2654,24 +2564,12 @@
-
-
-
-
-
-
-
-
-
-
-
-
@@ -3182,12 +3080,6 @@
-
-
-
-
-
-
@@ -3200,12 +3092,6 @@
-
-
-
-
-
-
@@ -3740,12 +3626,6 @@
-
-
-
-
-
-
@@ -3816,12 +3696,6 @@
-
-
-
-
-
-
@@ -3918,12 +3792,6 @@
-
-
-
-
-
-
@@ -3948,12 +3816,6 @@
-
-
-
-
-
-
diff --git a/libraries/tools/kotlin-gradle-plugin-api/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-api/build.gradle.kts
index 0ed255c6704..760bb92eebd 100644
--- a/libraries/tools/kotlin-gradle-plugin-api/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin-api/build.gradle.kts
@@ -16,14 +16,6 @@ dependencies {
commonApi(project(":kotlin-tooling-core"))
commonCompileOnly(project(":kotlin-gradle-compiler-types"))
- commonCompileOnly("com.android.tools.build:gradle-api:4.2.2") {
- // Without it - Gradle dependency resolution fails with unexpected error
- // Caused by: java.lang.IllegalStateException: Unexpected parent dependency id 131. Seen ids: [129, 2, 130, 9, 10, 138, 11, 139, 140, 14, 153, 154, 155, 156, 157, 158, 161, 164, 177, 178, 51, 179, 52, 180, 53, 54, 55, 183, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 195, 68, 200, 201, 202, 203, 206, 211, 212, 215, 222, 223, 224, 231, 232, 105, 233, 106, 107, 108, 109, 110, 111, 112, 113, 114, 242, 115, 243, 116, 244, 117, 118, 119, 120, 121, 122]
- // at org.gradle.api.internal.artifacts.ivyservice.resolveengine.oldresult.TransientConfigurationResultsBuilder.deserialize(TransientConfigurationResultsBuilder.java:171)
- // at org.gradle.api.internal.artifacts.ivyservice.resolveengine.oldresult.TransientConfigurationResultsBuilder.lambda$load$5(TransientConfigurationResultsBuilder.java:117)
- // Could be reproduced by running `:kotlin-gradle-plugin-api:gPFFPMP` task
- isTransitive = false
- }
embedded(project(":kotlin-gradle-compiler-types")) { isTransitive = false }
}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CompilerOptionsProjectIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CompilerOptionsProjectIT.kt
index 4d0194853e7..55adedcd2fb 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CompilerOptionsProjectIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CompilerOptionsProjectIT.kt
@@ -444,8 +444,6 @@ class CompilerOptionsProjectIT : KGPBaseTest() {
@DisplayName("KT-57959: should be possible to configure module name in MPP/android")
@GradleAndroidTest
- @GradleTestVersions(minVersion = TestVersions.Gradle.G_7_0)
- @AndroidTestVersions(minVersion = TestVersions.AGP.AGP_70)
@AndroidGradlePluginTests
@Disabled("DSL was demoted to 'internal'; Design is planned for 2.0")
fun mppAndroidModuleName(
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/ExternalAndroidTargetIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/ExternalAndroidTargetIT.kt
index faf209d705f..153d1da6230 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/ExternalAndroidTargetIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/ExternalAndroidTargetIT.kt
@@ -19,7 +19,7 @@ import java.nio.file.Path
import kotlin.io.path.readText
import kotlin.test.fail
-@GradleTestVersions(minVersion = TestVersions.Gradle.G_8_1)
+@GradleTestVersions(minVersion = TestVersions.Gradle.G_8_2)
@AndroidTestVersions(minVersion = TestVersions.AGP.AGP_82)
@AndroidGradlePluginTests
class ExternalAndroidTargetIT : KGPBaseTest() {
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt3AndroidExternalIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt3AndroidExternalIT.kt
index 7bfdbc653d1..c61dc2b58ef 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt3AndroidExternalIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt3AndroidExternalIT.kt
@@ -194,7 +194,6 @@ open class Kapt3AndroidExternalIT : Kapt3BaseIT() {
@DisplayName("kapt works with androidx")
@GradleAndroidTest
- @AndroidTestVersions(minVersion = TestVersions.AGP.AGP_42, maxVersion = TestVersions.AGP.AGP_42)
fun testDatabindingWithAndroidX(
gradleVersion: GradleVersion,
agpVersion: String,
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidMppIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidMppIT.kt
index 33ae4ebf252..a68ecac1c1a 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidMppIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidMppIT.kt
@@ -8,10 +8,6 @@ package org.jetbrains.kotlin.gradle.android
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
import org.jetbrains.kotlin.gradle.testbase.*
-import org.jetbrains.kotlin.gradle.testbase.TestVersions.AGP.AGP_70
-import org.jetbrains.kotlin.gradle.testbase.TestVersions.AGP.AGP_71
-import org.jetbrains.kotlin.gradle.testbase.TestVersions.Gradle.G_7_1
-import org.jetbrains.kotlin.gradle.testbase.TestVersions.Gradle.G_7_2
import org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask
import org.jetbrains.kotlin.gradle.util.AGPVersion
import org.jetbrains.kotlin.gradle.util.replaceText
@@ -28,8 +24,6 @@ import kotlin.test.*
@DisplayName("kotlin-android with mpp")
@AndroidGradlePluginTests
-@GradleTestVersions(minVersion = G_7_1)
-@AndroidTestVersions(minVersion = AGP_70)
class KotlinAndroidMppIT : KGPBaseTest() {
@DisplayName("KotlinToolingMetadataArtifact is bundled into apk")
@@ -67,8 +61,6 @@ class KotlinAndroidMppIT : KGPBaseTest() {
}
}
- @AndroidTestVersions(minVersion = AGP_71)
- @GradleTestVersions(minVersion = G_7_2)
@DisplayName("mpp source sets are registered in AGP")
@GradleAndroidTest
fun testAndroidMppSourceSets(
@@ -133,8 +125,6 @@ class KotlinAndroidMppIT : KGPBaseTest() {
}
}
- @AndroidTestVersions(minVersion = AGP_70)
- @GradleTestVersions(minVersion = G_7_2)
@DisplayName("android mpp lib flavors publication can be configured")
@GradleAndroidTest
fun testMppAndroidLibFlavorsPublication(
@@ -266,17 +256,10 @@ class KotlinAndroidMppIT : KGPBaseTest() {
build("publish") {
listOf("fooBar", "fooBaz").forEach { flavorName ->
val flavor = flavorName.lowercase()
-
- val flavorAttributes = if (AGPVersion.fromString(agpVersion) > AGPVersion.v7_0_0) {
- arrayOf(
- "foo" to flavorName,
- "com.android.build.api.attributes.ProductFlavor:foo" to flavorName
- )
- } else {
- arrayOf(
- "foo" to flavorName
- )
- }
+ val flavorAttributes = arrayOf(
+ "foo" to flavorName,
+ "com.android.build.api.attributes.ProductFlavor:foo" to flavorName
+ )
assertFileExists(groupDir.resolve("lib-androidlib-$flavor/1.0/lib-androidlib-$flavor-1.0.aar"))
assertFileExists(groupDir.resolve("lib-androidlib-$flavor/1.0/lib-androidlib-$flavor-1.0-sources.jar"))
@@ -319,16 +302,10 @@ class KotlinAndroidMppIT : KGPBaseTest() {
listOf("fooBar", "fooBaz").forEach { flavorName ->
val flavor = flavorName.lowercase()
- val flavorAttributes = if (AGPVersion.fromString(agpVersion) > AGPVersion.v7_0_0) {
- arrayOf(
- "foo" to flavorName,
- "com.android.build.api.attributes.ProductFlavor:foo" to flavorName
- )
- } else {
- arrayOf(
- "foo" to flavorName
- )
- }
+ val flavorAttributes = arrayOf(
+ "foo" to flavorName,
+ "com.android.build.api.attributes.ProductFlavor:foo" to flavorName
+ )
listOf("-debug", "").forEach { buildType ->
assertFileExists(groupDir.resolve("lib-androidlib-$flavor$buildType/1.0/lib-androidlib-$flavor$buildType-1.0.aar"))
@@ -587,8 +564,6 @@ class KotlinAndroidMppIT : KGPBaseTest() {
}
}
- @AndroidTestVersions(minVersion = AGP_70)
- @GradleTestVersions(minVersion = G_7_2)
@DisplayName("KT-27714: custom attributes are copied to android compilation configurations")
@GradleAndroidTest
fun testCustomAttributesInAndroidTargets(
@@ -796,10 +771,9 @@ class KotlinAndroidMppIT : KGPBaseTest() {
}
}
+ // TODO: improve it via KT-63409
@DisplayName("produced artifacts are consumable by projects with various AGP versions")
@GradleAndroidTest
- @AndroidTestVersions(minVersion = TestVersions.AGP.AGP_71)
- @GradleTestVersions(minVersion = TestVersions.Gradle.G_7_2) // due AGP version limit ^
fun testAndroidMultiplatformPublicationAGPCompatibility(
gradleVersion: GradleVersion,
agpVersion: String,
@@ -822,30 +796,20 @@ class KotlinAndroidMppIT : KGPBaseTest() {
}
}
- val checkedConsumerAGPVersions = AGPVersion.testedVersions
- .filter { version -> version >= AGPVersion.fromString(TestVersions.AGP.AGP_42) }
- .filter { version -> version < AGPVersion.fromString(TestVersions.AGP.MAX_SUPPORTED) }
- .map { it.toString() }
+ val checkedConsumerAGPVersions = TestVersions.AgpCompatibilityMatrix
+ .values()
+ .filter { agp -> AGPVersion.fromString(agp.version) < AGPVersion.fromString(TestVersions.AGP.MAX_SUPPORTED) }
checkedConsumerAGPVersions.forEach { consumerAgpVersion ->
- val agpTestVersion = TestVersions.AgpCompatibilityMatrix.values().find { it.version == consumerAgpVersion }
- ?: fail("AGP version $consumerAgpVersion is not defined in TestVersions.AGP!")
- val consumerGradleVersion = when {
- gradleVersion < agpTestVersion.minSupportedGradleVersion -> agpTestVersion.minSupportedGradleVersion
- gradleVersion > agpTestVersion.maxSupportedGradleVersion -> agpTestVersion.maxSupportedGradleVersion
- else -> gradleVersion
- }
- println("Testing compatibility for AGP consumer version $consumerAgpVersion on Gradle ${consumerGradleVersion.version} (Producer: $agpVersion)")
+ println(
+ "Testing compatibility for AGP consumer version $consumerAgpVersion on Gradle" +
+ " ${consumerAgpVersion.minSupportedGradleVersion} (Producer: $agpVersion)"
+ )
project(
"new-mpp-android-agp-compatibility",
- consumerGradleVersion,
- buildOptions = defaultBuildOptions.copy(androidVersion = consumerAgpVersion)
- .suppressDeprecationWarningsOn(
- "AGP relies on FileTrees for ignoring empty directories when using @SkipWhenEmpty which has been deprecated."
- ) { options ->
- consumerGradleVersion >= GradleVersion.version(TestVersions.Gradle.G_7_4) && AGPVersion.fromString(options.safeAndroidVersion) < AGPVersion.v7_1_0
- },
- buildJdk = jdkVersion.location,
+ consumerAgpVersion.minSupportedGradleVersion,
+ buildOptions = defaultBuildOptions.copy(androidVersion = consumerAgpVersion.version),
+ buildJdk = File(System.getProperty("jdk${consumerAgpVersion.requiredJdkVersion.majorVersion}Home")),
localRepoDir = tempDir
) {
/*
@@ -860,7 +824,10 @@ class KotlinAndroidMppIT : KGPBaseTest() {
*/
build(":plainAndroidConsumer:assemble")
}
- println("Successfully tested compatibility for AGP consumer version $consumerAgpVersion on Gradle ${consumerGradleVersion.version} (Producer: $agpVersion)")
+ println(
+ "Successfully tested compatibility for AGP consumer version $consumerAgpVersion on Gradle" +
+ " ${consumerAgpVersion.minSupportedGradleVersion} (Producer: $agpVersion)"
+ )
}
}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/MultiplatformAndroidSourceSetLayoutV2IT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/MultiplatformAndroidSourceSetLayoutV2IT.kt
index b67882730ac..9ae9851c09b 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/MultiplatformAndroidSourceSetLayoutV2IT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/MultiplatformAndroidSourceSetLayoutV2IT.kt
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.gradle.android
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.testbase.*
-import org.jetbrains.kotlin.gradle.util.AGPVersion
import org.junit.jupiter.api.DisplayName
import kotlin.test.assertNull
@@ -17,18 +16,11 @@ class MultiplatformAndroidSourceSetLayoutV2IT : KGPBaseTest() {
@GradleAndroidTest
@DisplayName("test Android project with flavors")
- @AndroidTestVersions(minVersion = "7.0.4")
- @GradleTestVersions(minVersion = TestVersions.Gradle.G_7_0) // due AGP version limit ^
fun testProjectWithFlavors(gradleVersion: GradleVersion, agpVersion: String, jdkVersion: JdkVersions.ProvidedJdk) {
project(
"multiplatformAndroidSourceSetLayout2",
gradleVersion,
- defaultBuildOptions.copy(androidVersion = agpVersion)
- .suppressDeprecationWarningsOn(
- "AGP relies on FileTrees for ignoring empty directories when using @SkipWhenEmpty which has been deprecated."
- ) { options ->
- gradleVersion >= GradleVersion.version(TestVersions.Gradle.G_7_4) && AGPVersion.fromString(options.safeAndroidVersion) < AGPVersion.v7_1_0
- },
+ defaultBuildOptions.copy(androidVersion = agpVersion),
buildJdk = jdkVersion.location
) {
build("test") {
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/AndroidAndJavaConsumeMppLibIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/AndroidAndJavaConsumeMppLibIT.kt
index 811a6281593..f4de6e177ef 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/AndroidAndJavaConsumeMppLibIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/AndroidAndJavaConsumeMppLibIT.kt
@@ -27,10 +27,11 @@ import java.lang.Boolean as RefBoolean
// Tests are not working with AGP >= 7.1.0. See KT-57351 for details
+@Ignore("TODO: update this test via KT-58298")
class AndroidAndJavaConsumeMppLibBuiltByGradle7IT : AndroidAndJavaConsumeMppLibIT() {
- override val producerAgpVersion: AGPVersion = AGPVersion.v7_0_0
+ override val producerAgpVersion: AGPVersion = AGPVersion.v7_1_0
override val producerGradleVersion: GradleVersionRequired = GradleVersionRequired.InRange(
- TestVersions.Gradle.G_7_0,
+ TestVersions.Gradle.G_7_1,
TestVersions.Gradle.G_7_6
)
}
@@ -67,8 +68,7 @@ abstract class AndroidAndJavaConsumeMppLibIT : BaseGradleIT() {
@Parameterized.Parameters(name = "Consumer(AGP={3}, Gradle={4}), flavors={0}, debugOnly={1}, published={2}")
fun testCases(): List> {
val consumers = listOf(
- AGPVersion.v4_2_0 to GradleVersionRequired.Exact(TestVersions.Gradle.G_6_9),
- AGPVersion.v7_0_0 to GradleVersionRequired.AtLeast(TestVersions.Gradle.G_7_6),
+ AGPVersion.v7_1_0 to GradleVersionRequired.AtLeast(TestVersions.Gradle.G_7_6),
)
val buildParams = listOf(
/* useFlavors, isAndroidPublishDebugOnly, isPublishedLibrary */
@@ -120,16 +120,12 @@ abstract class AndroidAndJavaConsumeMppLibIT : BaseGradleIT() {
val producerBuildOptions: BuildOptions
dependencyProject = Project("new-mpp-android", producerGradleVersion, minLogLevel = LogLevel.INFO).apply {
- val usedProducerGradleVersion = chooseWrapperVersionOrFinishTest()
+ chooseWrapperVersionOrFinishTest()
producerBuildOptions = defaultBuildOptions().copy(
javaHome = jdk11Home,
androidHome = KtTestUtil.findAndroidSdk(),
androidGradlePluginVersion = producerAgpVersion,
- ).suppressDeprecationWarningsOn(
- "AGP relies on FileTrees for ignoring empty directories when using @SkipWhenEmpty which has been deprecated (Gradle 7.4)"
- ) { options ->
- GradleVersion.version(usedProducerGradleVersion) >= GradleVersion.version(TestVersions.Gradle.G_7_4) && options.safeAndroidGradlePluginVersion < AGPVersion.v7_1_0
- }
+ )
producerBuildOptions.androidHome?.let { acceptAndroidSdkLicenses(it) }
projectDir.deleteRecursively()
setupWorkingDir()
@@ -296,7 +292,11 @@ abstract class AndroidAndJavaConsumeMppLibIT : BaseGradleIT() {
"AGP uses deprecated IncrementalTaskInputs (Gradle 7.5)"
) { options ->
// looks a bit messy :/
- (!isPublishedLibrary && (withKotlinVersion != null || options.safeAndroidGradlePluginVersion >= AGPVersion.v7_0_0) || isPublishedLibrary && withKotlinVersion == oldKotlinVersion) &&
+ (!isPublishedLibrary &&
+ (withKotlinVersion != null || options.safeAndroidGradlePluginVersion >= AGPVersion.v7_1_0) ||
+ isPublishedLibrary &&
+ withKotlinVersion == oldKotlinVersion
+ ) &&
GradleVersion.version(usedConsumerGradleVersion) >= GradleVersion.version(TestVersions.Gradle.G_7_5) &&
options.safeAndroidGradlePluginVersion < AGPVersion.v7_3_0
}
@@ -308,7 +308,7 @@ abstract class AndroidAndJavaConsumeMppLibIT : BaseGradleIT() {
* This test asserts the existing incorrect behavior for older Gradle versions
* in the absence of the Kotlin Gradle plugin, in order to detect unintentional changes
*/
- val expectedVariant = if (consumerAgpVersion < AGPVersion.v7_0_0 && withKotlinVersion == null && !isPublishedLibrary) {
+ val expectedVariant = if (withKotlinVersion == null && !isPublishedLibrary) {
"jvmLibApiElements"
} else expected
@@ -375,7 +375,7 @@ class ResolvedVariantChecker {
}
}
- fun getResolvedVariantsBatch(
+ private fun getResolvedVariantsBatch(
project: BaseGradleIT.Project,
requests: Iterable,
buildOptions: BaseGradleIT.BuildOptions = project.testCase.defaultBuildOptions()
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppCompositeBuildIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppCompositeBuildIT.kt
index 753da1a9218..ad906d04779 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppCompositeBuildIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppCompositeBuildIT.kt
@@ -354,8 +354,6 @@ class MppCompositeBuildIT : KGPBaseTest() {
}
}
- @GradleTestVersions(minVersion = TestVersions.Gradle.G_7_1)
- @AndroidTestVersions(minVersion = TestVersions.AGP.AGP_70)
@GradleAndroidTest
fun `test - sample6-KT-56712-umbrella-composite`(
gradleVersion: GradleVersion, agpVersion: String, jdkVersion: JdkVersions.ProvidedJdk,
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/TestVersions.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/TestVersions.kt
index 947268031e9..26c96724a1a 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/TestVersions.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/TestVersions.kt
@@ -42,17 +42,15 @@ interface TestVersions {
}
object AGP {
- const val AGP_42 = "4.2.2"
- const val AGP_70 = "7.0.4"
const val AGP_71 = "7.1.3"
const val AGP_72 = "7.2.2"
const val AGP_73 = "7.3.1"
const val AGP_74 = "7.4.2"
const val AGP_80 = "8.0.2"
- const val AGP_81 = "8.1.0-rc01"
- const val AGP_82 = "8.2.0-alpha13"
+ const val AGP_81 = "8.1.3"
+ const val AGP_82 = "8.2.0-rc03"
- const val MIN_SUPPORTED = AGP_42 // KotlinAndroidPlugin.minimalSupportedAgpVersion
+ const val MIN_SUPPORTED = AGP_71 // KotlinAndroidPlugin.minimalSupportedAgpVersion
const val MAX_SUPPORTED = AGP_81 // Update once Gradle MAX_SUPPORTED version will be bumped
}
@@ -62,15 +60,13 @@ interface TestVersions {
val maxSupportedGradleVersion: GradleVersion,
val requiredJdkVersion: JavaVersion
) {
- AGP_42(AGP.AGP_42, GradleVersion.version(Gradle.MIN_SUPPORTED), GradleVersion.version(Gradle.G_6_9), JavaVersion.VERSION_1_8),
- AGP_70(AGP.AGP_70, GradleVersion.version(Gradle.G_7_0), GradleVersion.version(Gradle.G_7_4), JavaVersion.VERSION_11),
AGP_71(AGP.AGP_71, GradleVersion.version(Gradle.G_7_2), GradleVersion.version(Gradle.G_7_4), JavaVersion.VERSION_11),
AGP_72(AGP.AGP_72, GradleVersion.version(Gradle.G_7_3), GradleVersion.version(Gradle.G_7_4), JavaVersion.VERSION_11),
AGP_73(AGP.AGP_73, GradleVersion.version(Gradle.G_7_4), GradleVersion.version(Gradle.G_7_5), JavaVersion.VERSION_11),
AGP_74(AGP.AGP_74, GradleVersion.version(Gradle.G_7_5), GradleVersion.version(Gradle.G_7_6), JavaVersion.VERSION_11),
AGP_80(AGP.AGP_80, GradleVersion.version(Gradle.G_8_0), GradleVersion.version(Gradle.G_8_0), JavaVersion.VERSION_17),
AGP_81(AGP.AGP_81, GradleVersion.version(Gradle.G_8_1), GradleVersion.version(Gradle.G_8_1), JavaVersion.VERSION_17),
- AGP_82(AGP.AGP_82, GradleVersion.version(Gradle.G_8_1), GradleVersion.version(Gradle.G_8_3), JavaVersion.VERSION_17),
+ AGP_82(AGP.AGP_82, GradleVersion.version(Gradle.G_8_2), GradleVersion.version(Gradle.G_8_3), JavaVersion.VERSION_17),
;
}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/argumentProviders.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/argumentProviders.kt
index deac4e4e5d6..f0fcc5c1d3b 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/argumentProviders.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/argumentProviders.kt
@@ -177,14 +177,13 @@ class GradleAndAgpArgumentsProvider : GradleArgumentsProvider() {
gradleVersions
.filter { it in agpVersion.minSupportedGradleVersion..agpVersion.maxSupportedGradleVersion }
+ .ifEmpty {
+ // Falling back to the minimal supported Gradle version for this AGP version
+ listOf(agpVersion.minSupportedGradleVersion)
+ }
.map {
AgpTestArguments(it, agpVersion.version, providedJdk)
}
- .also {
- require(it.isNotEmpty()) {
- "Could not find suitable Gradle version for AGP $agpVersion version!"
- }
- }
}
.asSequence()
.map {
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/AGPVersion.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/AGPVersion.kt
index f1fb52178d3..71193a66b7c 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/AGPVersion.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/AGPVersion.kt
@@ -18,14 +18,7 @@ class AGPVersion private constructor(private val versionNumber: VersionNumber) {
fun fromString(versionString: String): AGPVersion =
AGPVersion(VersionNumber.parse(versionString))
- val v4_1_0 = fromString("4.1.3")
- val v4_2_0 = fromString("4.2.2")
- val v7_0_0 = fromString("7.0.4")
val v7_1_0 = fromString("7.1.3")
- val v7_2_2 = fromString("7.2.2")
val v7_3_0 = fromString("7.3.1")
- val v7_4_0 = fromString("7.4.2")
-
- val testedVersions = listOf(v4_1_0, v4_2_0, v7_0_0, v7_1_0, v7_2_2, v7_3_0, v7_4_0)
}
}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/externalAndroidTarget-project2project/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/externalAndroidTarget-project2project/build.gradle.kts
index be11214d48c..2b1685c4916 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/externalAndroidTarget-project2project/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/externalAndroidTarget-project2project/build.gradle.kts
@@ -21,7 +21,7 @@ kotlin {
compileSdk = 33
namespace = "org.jetbrains.sample"
- withAndroidTestOnJvm()
+ withAndroidTestOnJvm {}
sourceSets.getByName("androidTestOnJvm").dependencies {
implementation("junit:junit:4.13.2")
}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/externalAndroidTarget-simple/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/externalAndroidTarget-simple/build.gradle.kts
index aaf36e47d72..87b20119fcb 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/externalAndroidTarget-simple/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/externalAndroidTarget-simple/build.gradle.kts
@@ -17,7 +17,7 @@ kotlin {
compileSdk = 33
namespace = "org.jetbrains.sample"
- withAndroidTestOnJvm()
+ withAndroidTestOnJvm {}
sourceSets.getByName("androidTestOnJvm").dependencies {
implementation("junit:junit:4.13.2")
}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding-androidX/app/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding-androidX/app/build.gradle
index 4d289774050..831698204d3 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding-androidX/app/build.gradle
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding-androidX/app/build.gradle
@@ -1,13 +1,16 @@
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-apply plugin: 'kotlin-kapt'
+plugins {
+ id 'com.android.application'
+ id 'org.jetbrains.kotlin.android'
+ id 'org.jetbrains.kotlin.kapt'
+}
android {
- compileSdkVersion 24
+ compileSdkVersion 34
+ namespace = "com.example.databinding"
defaultConfig {
applicationId "com.example.databinding"
minSdkVersion 21
- targetSdkVersion 24
+ targetSdkVersion 34
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -24,6 +27,5 @@ android {
}
dependencies {
- implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
- implementation 'com.android.support.constraint:constraint-layout:1.0.2'
-}
\ No newline at end of file
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding-androidX/app/src/main/AndroidManifest.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding-androidX/app/src/main/AndroidManifest.xml
index 9173ea53496..8f947d60393 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding-androidX/app/src/main/AndroidManifest.xml
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding-androidX/app/src/main/AndroidManifest.xml
@@ -1,7 +1,4 @@
-
-
+
-
-
\ No newline at end of file
+
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding-androidX/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding-androidX/build.gradle
index b51edd42440..3c1bbe9bffa 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding-androidX/build.gradle
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding-androidX/build.gradle
@@ -1,26 +1,8 @@
-import org.gradle.util.VersionNumber
-
// Top-level build file where you can add configuration options common to all sub-projects/modules.
-
-buildscript {
- repositories {
- mavenLocal()
- maven { url 'https://maven.google.com' }
- mavenCentral()
- }
- dependencies {
- classpath "com.android.tools.build:gradle:$android_tools_version"
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
-
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
-}
-
allprojects {
repositories {
mavenLocal()
- maven { url 'https://maven.google.com' }
+ google()
mavenCentral()
}
-}
\ No newline at end of file
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding-androidX/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding-androidX/gradle.properties
index 5465fec0eca..5d5dfe05b99 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding-androidX/gradle.properties
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding-androidX/gradle.properties
@@ -1,2 +1,4 @@
android.enableJetifier=true
-android.useAndroidX=true
\ No newline at end of file
+android.useAndroidX=true
+
+kotlin.jvm.target.validation.mode=warning
diff --git a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts
index 7f3c3b59d7e..7c03ad52bcf 100644
--- a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts
@@ -67,25 +67,11 @@ dependencies {
commonCompileOnly(project(":kotlin-compiler-runner-unshaded"))
commonCompileOnly(project(":kotlin-gradle-statistics"))
commonCompileOnly(project(":kotlin-gradle-build-metrics"))
- commonCompileOnly("com.android.tools.build:gradle:4.2.2") {
- exclude("org.ow2.asm")
- exclude("net.sf.proguard")
- exclude("net.sf.jopt-simple")
- exclude("com.squareup")
- exclude("com.google.crypto.tink")
- exclude("com.google.guava")
- exclude("com.google.protobuf")
- exclude("com.google.testing.platform")
- exclude("com.android.tools.lint")
- exclude("androidx.databinding")
- exclude("com.android.tools.analytics-library")
- exclude("com.android.tools.build.jetifier")
- exclude("com.android.tools.build", "transform-api")
- exclude("com.android.tools.build", "builder-test-api")
- exclude("com.android.tools.build", "bundletool")
- exclude("com.android.tools.build", "aaptcompiler")
- exclude("com.android.tools.build", "aapt2-proto")
- }
+ commonCompileOnly(libs.android.gradle.plugin.gradle.api) { isTransitive = false }
+ commonCompileOnly(libs.android.gradle.plugin.gradle) { isTransitive = false }
+ commonCompileOnly(libs.android.gradle.plugin.builder) { isTransitive = false }
+ commonCompileOnly(libs.android.gradle.plugin.builder.model) { isTransitive = false }
+ commonCompileOnly(libs.android.tools.common) { isTransitive = false }
commonCompileOnly(intellijPlatformUtil())
commonCompileOnly(commonDependency("org.jetbrains.teamcity:serviceMessages"))
commonCompileOnly(libs.gradle.enterprise.gradlePlugin)
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinAndroidPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinAndroidPlugin.kt
index 6aab6dca152..0fd014d11a4 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinAndroidPlugin.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinAndroidPlugin.kt
@@ -56,7 +56,7 @@ internal open class KotlinAndroidPlugin(
}
companion object {
- private val minimalSupportedAgpVersion = AndroidGradlePluginVersion(4, 2, 2)
+ private val minimalSupportedAgpVersion = AndroidGradlePluginVersion(7, 1, 3)
fun androidTargetHandler(): AndroidProjectHandler {
val tasksProvider = KotlinTasksProvider()
val androidGradlePluginVersion = AndroidGradlePluginVersion.currentOrNull
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt
index 17ce61fa39b..0595cb8c319 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt
@@ -186,6 +186,11 @@ abstract class DefaultKotlinBasePlugin : KotlinBasePlugin {
ConfigurationCacheStartParameterAccessor.Factory::class,
DefaultConfigurationCacheStartParameterAccessorVariantFactory()
)
+
+ factories.putIfAbsent(
+ SourceSetCompatibilityHelper.SourceSetCompatibilityHelperVariantFactory::class,
+ DefaultSourceSetCompatibilityHelperVariantFactory()
+ )
}
protected fun setupAttributeMatchingStrategy(
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt
index e372190f1aa..409d5822a17 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt
@@ -6,17 +6,9 @@
package org.jetbrains.kotlin.gradle.plugin
import org.gradle.api.Named
-import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
-import org.gradle.api.artifacts.type.ArtifactTypeDefinition
import org.gradle.api.attributes.*
-import org.gradle.api.plugins.BasePlugin
-import org.gradle.api.plugins.ExtensionAware
-import org.gradle.api.plugins.JavaBasePlugin
-import org.gradle.api.tasks.TaskProvider
-import org.gradle.api.tasks.bundling.Jar
-import org.gradle.api.tasks.bundling.Zip
import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.runKotlinCompilationSideEffects
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsCompilerAttribute
@@ -24,11 +16,7 @@ import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetAttribute
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
import org.jetbrains.kotlin.gradle.targets.js.toAttribute
import org.jetbrains.kotlin.gradle.targets.runKotlinTargetSideEffects
-import org.jetbrains.kotlin.gradle.tasks.registerTask
import org.jetbrains.kotlin.gradle.utils.*
-import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
-import kotlin.reflect.KMutableProperty1
-import kotlin.reflect.full.memberProperties
interface KotlinTargetConfigurator {
fun configureTarget(
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/SourceSetCompatibilityHelper.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/SourceSetCompatibilityHelper.kt
new file mode 100644
index 00000000000..82bf7114e04
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/SourceSetCompatibilityHelper.kt
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2010-2023 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.plugin.internal
+
+import org.gradle.api.tasks.SourceSet
+import org.jetbrains.kotlin.gradle.plugin.VariantImplementationFactories
+
+interface SourceSetCompatibilityHelper {
+
+ fun getCompileConfigurationName(sourceSet: SourceSet): String?
+
+ fun getRuntimeConfigurationName(sourceSet: SourceSet): String?
+
+ interface SourceSetCompatibilityHelperVariantFactory : VariantImplementationFactories.VariantImplementationFactory {
+ fun getInstance(): SourceSetCompatibilityHelper
+ }
+}
+
+internal class DefaultSourceSetCompatibilityHelperVariantFactory : SourceSetCompatibilityHelper.SourceSetCompatibilityHelperVariantFactory {
+ override fun getInstance(): SourceSetCompatibilityHelper = DefaultSourceSetCompatibilityHelper()
+}
+
+internal class DefaultSourceSetCompatibilityHelper() : SourceSetCompatibilityHelper {
+ override fun getCompileConfigurationName(sourceSet: SourceSet): String? = null
+
+ override fun getRuntimeConfigurationName(sourceSet: SourceSet): String? = null
+}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt
index 952fef453f9..8edc559ca3b 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.AfterFinal
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessor
+import org.jetbrains.kotlin.gradle.plugin.internal.SourceSetCompatibilityHelper
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.internal
@@ -41,10 +42,8 @@ import org.jetbrains.kotlin.gradle.utils.*
import org.jetbrains.kotlin.gradle.utils.Future
import org.jetbrains.kotlin.gradle.utils.findAppliedAndroidPluginIdOrNull
import org.jetbrains.kotlin.gradle.utils.future
-import org.jetbrains.kotlin.utils.addToStdlib.cast
import java.util.concurrent.Callable
import javax.inject.Inject
-import kotlin.reflect.full.functions
abstract class KotlinJvmTarget @Inject constructor(
project: Project,
@@ -168,8 +167,11 @@ abstract class KotlinJvmTarget @Inject constructor(
}
project.launchInStage(AfterFinaliseDsl) {
+ val sourceSetCompatibilityHelper = project
+ .variantImplementationFactory()
+ .getInstance()
javaSourceSets.all { javaSourceSet ->
- copyUserDefinedAttributesToJavaConfigurations(javaSourceSet)
+ copyUserDefinedAttributesToJavaConfigurations(javaSourceSet, sourceSetCompatibilityHelper)
}
}
@@ -259,12 +261,13 @@ abstract class KotlinJvmTarget @Inject constructor(
// Add the Java source set dependencies to the Kotlin compilation compile & runtime configurations:
+ val sourceSetCompatibilityHelper = project
+ .variantImplementationFactory()
+ .getInstance()
+
val compileConfigurationName = if (areRuntimeOrCompileConfigurationsAvailable()) {
- javaSourceSet::class
- .functions
- .find { it.name == "getCompileConfigurationName" }
- ?.call(javaSourceSet)
- ?.cast()
+ sourceSetCompatibilityHelper
+ .getCompileConfigurationName(javaSourceSet)
?.takeIf { project.configurations.findByName(it) != null }
} else null
@@ -278,11 +281,8 @@ abstract class KotlinJvmTarget @Inject constructor(
}
val runtimeConfigurationName = if (areRuntimeOrCompileConfigurationsAvailable()) {
- javaSourceSet::class
- .functions
- .find { it.name == "getRuntimeConfigurationName" }
- ?.call(javaSourceSet)
- ?.cast()
+ sourceSetCompatibilityHelper
+ .getRuntimeConfigurationName(javaSourceSet)
?.takeIf { project.configurations.findByName(it) != null }
} else null
@@ -296,22 +296,19 @@ abstract class KotlinJvmTarget @Inject constructor(
}
}
- private fun copyUserDefinedAttributesToJavaConfigurations(javaSourceSet: SourceSet) {
+ private fun copyUserDefinedAttributesToJavaConfigurations(
+ javaSourceSet: SourceSet,
+ sourceSetCompatibilityHelper: SourceSetCompatibilityHelper
+ ) {
val compileConfigurationName = if (areRuntimeOrCompileConfigurationsAvailable()) {
- javaSourceSet::class
- .functions
- .find { it.name == "getCompileConfigurationName" }
- ?.call(javaSourceSet)
- ?.cast()
+ sourceSetCompatibilityHelper
+ .getCompileConfigurationName(javaSourceSet)
?.takeIf { project.configurations.findByName(it) != null }
} else null
val runtimeConfigurationName = if (areRuntimeOrCompileConfigurationsAvailable()) {
- javaSourceSet::class
- .functions
- .find { it.name == "getRuntimeConfigurationName" }
- ?.call(javaSourceSet)
- ?.cast()
+ sourceSetCompatibilityHelper
+ .getRuntimeConfigurationName(javaSourceSet)
?.takeIf { project.configurations.findByName(it) != null }
} else null
diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt
index 669ed1eca2c..24db536fa0a 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt
@@ -10,7 +10,6 @@ import org.gradle.api.Named
import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.Project
import org.gradle.api.file.SourceDirectorySet
-import org.gradle.api.model.ObjectFactory
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
import org.jetbrains.kotlin.gradle.plugin.internal.*
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessorG6
@@ -161,4 +160,6 @@ private fun Project.registerVariantImplementations() {
factories[UnameExecutor.UnameExecutorVariantFactory::class] =
UnameExecutorG6.UnameExecutorVariantFactoryG6()
factories[ConfigurationCacheStartParameterAccessor.Factory::class] = ConfigurationCacheStartParameterAccessorG6.Factory()
+ factories[SourceSetCompatibilityHelper.SourceSetCompatibilityHelperVariantFactory::class] =
+ SourceSetCompatibilityHelperG6VariantFactory()
}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/SourceSetCompatibilityHelperG6.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/SourceSetCompatibilityHelperG6.kt
new file mode 100644
index 00000000000..e27eb83a649
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/SourceSetCompatibilityHelperG6.kt
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2010-2023 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.plugin.internal
+
+import org.gradle.api.tasks.SourceSet
+
+internal class SourceSetCompatibilityHelperG6 : SourceSetCompatibilityHelper {
+ override fun getCompileConfigurationName(sourceSet: SourceSet): String {
+ @Suppress("DEPRECATION")
+ return sourceSet.compileConfigurationName
+ }
+
+ override fun getRuntimeConfigurationName(sourceSet: SourceSet): String {
+ @Suppress("DEPRECATION")
+ return sourceSet.runtimeConfigurationName
+ }
+}
+
+internal class SourceSetCompatibilityHelperG6VariantFactory : SourceSetCompatibilityHelper.SourceSetCompatibilityHelperVariantFactory {
+ override fun getInstance(): SourceSetCompatibilityHelper = SourceSetCompatibilityHelperG6()
+}