diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt index 4b3510e3e7d..d58359d3136 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt @@ -1207,4 +1207,24 @@ class KotlinGradleIT : BaseGradleIT() { assertTrue(compiledKotlinClasses.isEmpty()) } } + + /** Regression test for KT-45787. **/ + @Test + fun testPluginDoesNotUseDeprecatedConfigurationsForAssociatedDependencies() { + with( + Project( + projectName = "associatedDependencies", + minLogLevel = LogLevel.INFO + ) + ) { + setupWorkingDir() + + build( + "tasks", + options = defaultBuildOptions().copy(warningMode = WarningMode.Fail) + ) { + assertSuccessful() + } + } + } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/associatedDependencies/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/associatedDependencies/build.gradle new file mode 100644 index 00000000000..dcea7225fea --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/associatedDependencies/build.gradle @@ -0,0 +1,29 @@ +plugins { + id "org.jetbrains.kotlin.jvm" +} + +sourceSets { + integrationTest { + kotlin { + srcDirs += "src/integrationTest/kotlin" + } + java { + srcDirs += "src/integrationTest/java" + } + resources { + srcDirs += "src/integrationTest/resources" + } + compileClasspath += main.output + test.output + runtimeClasspath += main.output + test.output + } +} + +kotlin { + target { + java + compilations.integrationTest { + associateWith compilations.main + associateWith compilations.test + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/associatedDependencies/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/associatedDependencies/settings.gradle new file mode 100644 index 00000000000..de7969b173a --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/associatedDependencies/settings.gradle @@ -0,0 +1,11 @@ +pluginManagement { + repositories { + mavenLocal() + mavenCentral() + gradlePluginPortal() + } + + plugins { + id "org.jetbrains.kotlin.jvm" version "$kotlin_version" + } +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt index a75801a914d..2635bdf5bed 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt @@ -253,18 +253,23 @@ abstract class AbstractKotlinCompilation( } protected open fun addAssociateCompilationDependencies(other: KotlinCompilation<*>) { - target.project.dependencies.run { - val project = target.project + with(target.project) { - add( - compileDependencyConfigurationName, - project.files(Callable { other.output.classesDirs }, Callable { other.compileDependencyFiles }) + dependencies.add( + compileOnlyConfigurationName, + project.files(Callable { other.output.classesDirs }) ) + configurations.named(compileOnlyConfigurationName).configure { + it.extendsFrom(configurations.findByName(other.compileDependencyConfigurationName)) + } + if (this@AbstractKotlinCompilation is KotlinCompilationToRunnableFiles<*>) { - add(runtimeDependencyConfigurationName, project.files(Callable { other.output.allOutputs })) + dependencies.add(runtimeOnlyConfigurationName, project.files(Callable { other.output.allOutputs })) if (other is KotlinCompilationToRunnableFiles<*>) { - add(runtimeDependencyConfigurationName, project.files(Callable { other.runtimeDependencyFiles })) + configurations.named(runtimeOnlyConfigurationName).configure { + it.extendsFrom(configurations.findByName(other.runtimeDependencyConfigurationName)) + } } } }