diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt index 6be626d4faf..e03933e8f43 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt @@ -3,6 +3,7 @@ package org.jetbrains.kotlin.gradle import org.gradle.api.logging.LogLevel import org.gradle.api.logging.configuration.WarningMode import org.gradle.util.GradleVersion +import org.jetbrains.kotlin.gradle.internal.ensureParentDirsCreated import org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask import org.jetbrains.kotlin.gradle.util.* import org.jetbrains.kotlin.test.util.KtTestUtil @@ -466,7 +467,7 @@ open class KotlinAndroid70GradleIT : KotlinAndroid36GradleIT() { get() = GradleVersionRequired.AtLeast("7.0") override fun defaultBuildOptions(): BuildOptions { - val javaHome = File("/opt/openjdk-bin-11") + val javaHome = File(System.getProperty("jdk11Home") ?: error("jdk11Home not specified")) Assume.assumeTrue("JDK 11 should be available", javaHome.isDirectory) return super.defaultBuildOptions().copy(javaHome = javaHome, warningMode = WarningMode.Summary) } @@ -1043,6 +1044,52 @@ fun getSomething() = 10 } } + @Test + fun testLintDependencyResolutionKt49483() = with(Project("AndroidProject")) { + setupWorkingDir() + + gradleBuildScript().modify { + """ + plugins { + id("com.android.lint") + } + + """.trimIndent() + it + } + + gradleBuildScript("Lib").appendText("\n" + """ + android { + lintOptions.checkDependencies = true + } + dependencies { + implementation(project(":java-lib")) + } + """.trimIndent()) + + gradleSettingsScript().appendText( + "\n" + """ + include("java-lib") + """.trimIndent() + ) + + with(projectDir.resolve("java-lib/build.gradle.kts")) { + ensureParentDirsCreated() + writeText( + """ + plugins { + id("java-library") + id("com.android.lint") + } + """.trimIndent() + ) + } + + build(":Lib:lintFlavor1Debug") { + assertSuccessful() + assertNotContains("as an external dependency and not analyze it.") + } + } + private fun jvmToAndroidModifier( appendKotlinVersion: Boolean = false ): (String) -> CharSequence = { line -> diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/settings.gradle index 457173910a0..1e74d615df6 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/settings.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/settings.gradle @@ -14,10 +14,7 @@ pluginManagement { resolutionStrategy { eachPlugin { - if (requested.id.id == "com.android.application" || - requested.id.id == "com.android.library" || - requested.id.id == "com.android.feature" || - requested.id.id == "com.android.test") { + if (requested.id.id.startsWith("com.android.")) { useModule("com.android.tools.build:gradle:$android_tools_version") } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt index 4509da428b1..bf31b1dc4c3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt @@ -329,7 +329,9 @@ abstract class AbstractKotlinTargetConfigurator isVisible = false isCanBeConsumed = false attributes.attribute(USAGE_ATTRIBUTE, KotlinUsages.consumerApiUsage(compilation.target)) - attributes.attribute(Category.CATEGORY_ATTRIBUTE, project.categoryByName(Category.LIBRARY)) + if (compilation.platformType != KotlinPlatformType.androidJvm) { + attributes.attribute(Category.CATEGORY_ATTRIBUTE, project.categoryByName(Category.LIBRARY)) + } description = "Compile classpath for $compilation." } @@ -359,7 +361,9 @@ abstract class AbstractKotlinTargetConfigurator isCanBeConsumed = false isCanBeResolved = true attributes.attribute(USAGE_ATTRIBUTE, KotlinUsages.consumerRuntimeUsage(compilation.target)) - attributes.attribute(Category.CATEGORY_ATTRIBUTE, project.categoryByName(Category.LIBRARY)) + if (compilation.platformType != KotlinPlatformType.androidJvm) { + attributes.attribute(Category.CATEGORY_ATTRIBUTE, project.categoryByName(Category.LIBRARY)) + } description = "Runtime classpath of $compilation." } }