1+ @file:OptIn(ExperimentalAbiValidation ::class )
2+
13package com.gradleup.librarian.gradle
24
5+ import com.gradleup.librarian.core.tooling.semVerOrThrow
36import org.gradle.api.Project
47import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
58import org.jetbrains.kotlin.gradle.dsl.abi.AbiValidationExtension
69import org.jetbrains.kotlin.gradle.dsl.abi.AbiValidationMultiplatformExtension
710import org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation
811import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
912
10- @OptIn(ExperimentalAbiValidation ::class )
1113fun Project.configureBcv (
1214 warnIfMissing : Boolean = true,
1315 excludePatterns : List <String > = emptyList(),
@@ -29,20 +31,38 @@ fun Project.configureBcv(
2931 it.exclude.byNames.addAll(excludePatterns)
3032 }
3133 }
32- else -> error(" Librarian: unknown abiValidation extension type: '${abiValidation.javaClass.name} '" )
34+ else -> error(" Librarian: unknown abiValidation extension type: '${abiValidation.javaClass.name} '" )
3335 }
3436
35- tasks.named( " build " ) {
36- it.dependsOn( " checkLegacyAbi " )
37- }
37+ // See https://kotlinlang.org/docs/whatsnew2320.html#improvements-to-binary-compatibility-validation-in-kgp
38+ val kgpVersion = this @configureBcv.getKotlinPluginVersion().semVerOrThrow( )
39+
3840 /* *
3941 * Compatibility tasks to not break the brain muscle
4042 */
41- tasks.register(" apiDump" ) {
42- it.dependsOn(" updateLegacyAbi" )
43- }
44- tasks.register(" apiCheck" ) {
45- it.dependsOn(" checkLegacyAbi" )
43+ if (kgpVersion >= " 2.3.20" .semVerOrThrow()) {
44+ tasks.register(" apiDump" ) {
45+ it.dependsOn(" updateKotlinAbi" )
46+ it.doLast {
47+ println (" `apiDump` is deprecated. Use `updateKotlinAbi` instead" )
48+ }
49+ }
50+ tasks.register(" apiCheck" ) {
51+ it.dependsOn(" checkKotlinAbi" )
52+ it.doLast {
53+ println (" `apiCheck` is deprecated. Use `updateKotlinAbi` instead" )
54+ }
55+ }
56+ } else {
57+ tasks.named(" build" ) {
58+ it.dependsOn(" checkLegacyAbi" )
59+ }
60+ tasks.register(" apiDump" ) {
61+ it.dependsOn(" updateLegacyAbi" )
62+ }
63+ tasks.register(" apiCheck" ) {
64+ it.dependsOn(" checkLegacyAbi" )
65+ }
4666 }
4767 } else {
4868 if (warnIfMissing) {
0 commit comments