From bdc213f1806ebcb070497de99fc261200f19e349 Mon Sep 17 00:00:00 2001 From: Jesse Wilson Date: Sun, 27 Feb 2022 10:20:06 -0500 Subject: [PATCH] Remove japicmp (#7118) This plugin served us very well for a long time. But the binary compatibility plugin is better suited for our current situation. --- build.gradle.kts | 5 +- buildSrc/src/main/kotlin/artifacts.kt | 19 ------ gradle/libs.versions.toml | 1 - mockwebserver-deprecated/build.gradle.kts | 24 -------- okhttp-logging-interceptor/build.gradle.kts | 14 ----- okhttp-sse/build.gradle.kts | 17 ------ okhttp-tls/build.gradle.kts | 17 ------ okhttp-urlconnection/build.gradle.kts | 15 ----- okhttp/build.gradle.kts | 66 --------------------- 9 files changed, 2 insertions(+), 176 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 522e2a05e..4bed6247a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,6 +4,7 @@ import java.net.URL import kotlinx.validation.ApiValidationExtension import org.gradle.api.tasks.testing.logging.TestExceptionFormat import org.jetbrains.dokka.gradle.DokkaTask +import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import ru.vyarus.gradle.plugin.animalsniffer.AnimalSnifferExtension @@ -17,7 +18,6 @@ buildscript { classpath(libs.gradlePlugin.graal) classpath(libs.gradlePlugin.bnd) classpath(libs.gradlePlugin.shadow) - classpath(libs.gradlePlugin.japicmp) classpath(libs.gradlePlugin.animalsniffer) classpath(libs.gradlePlugin.errorprone) classpath(libs.gradlePlugin.spotless) @@ -255,6 +255,5 @@ tasks.wrapper { // Fix until 1.6.20 https://youtrack.jetbrains.com/issue/KT-49109 rootProject.plugins.withType(NodeJsRootPlugin::class.java) { - rootProject.the().nodeVersion = - "16.13.0" + rootProject.the().nodeVersion = "16.13.0" } diff --git a/buildSrc/src/main/kotlin/artifacts.kt b/buildSrc/src/main/kotlin/artifacts.kt index 889e74758..17103e6bf 100644 --- a/buildSrc/src/main/kotlin/artifacts.kt +++ b/buildSrc/src/main/kotlin/artifacts.kt @@ -15,7 +15,6 @@ */ import aQute.bnd.gradle.BundleTaskExtension -import java.io.File import org.gradle.api.Project import org.gradle.api.plugins.ExtensionAware import org.gradle.api.tasks.SourceSetContainer @@ -62,23 +61,5 @@ private fun Project.applyOsgi( } } -/** - * Returns a .jar file for the golden version of this project. - * https://github.com/Visistema/Groovy1/blob/ba5eb9b2f19ca0cc8927359ce414c4e1974b7016/gradle/binarycompatibility.gradle#L48 - */ -fun Project.baselineJar(version: String = "3.14.1"): File? { - val originalGroup = group - return try { - val jarFile = "$name-$version.jar" - group = "virtual_group_for_japicmp" - val dependency = dependencies.create("$originalGroup:$name:$version@jar") - configurations.detachedConfiguration(dependency).files.find { (it.name == jarFile) } - } catch (e: Exception) { - null - } finally { - group = originalGroup - } -} - val Project.sourceSets: SourceSetContainer get() = (this as ExtensionAware).extensions["sourceSets"] as SourceSetContainer diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a79e3f93b..1aab955ea 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -38,7 +38,6 @@ gradlePlugin-bnd = { module = "biz.aQute.bnd:biz.aQute.bnd.gradle", version.ref gradlePlugin-dokka = "org.jetbrains.dokka:dokka-gradle-plugin:1.6.10" gradlePlugin-errorprone = "net.ltgt.gradle:gradle-errorprone-plugin:2.0.2" gradlePlugin-graal = "gradle.plugin.com.palantir.graal:gradle-graal:0.10.0" -gradlePlugin-japicmp = "me.champeau.gradle:japicmp-gradle-plugin:0.3.1" gradlePlugin-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "org-jetbrains-kotlin" } gradlePlugin-mavenPublish = "com.vanniktech:gradle-maven-publish-plugin:0.18.0" gradlePlugin-shadow = "gradle.plugin.com.github.johnrengelman:shadow:7.1.2" diff --git a/mockwebserver-deprecated/build.gradle.kts b/mockwebserver-deprecated/build.gradle.kts index 9d226303f..54cd4b48b 100644 --- a/mockwebserver-deprecated/build.gradle.kts +++ b/mockwebserver-deprecated/build.gradle.kts @@ -1,14 +1,11 @@ -import com.android.build.gradle.internal.tasks.factory.dependsOn import com.vanniktech.maven.publish.JavadocJar import com.vanniktech.maven.publish.KotlinJvm -import me.champeau.gradle.japicmp.JapicmpTask plugins { kotlin("jvm") id("org.jetbrains.dokka") id("com.vanniktech.maven.publish.base") id("binary-compatibility-validator") - id("me.champeau.gradle.japicmp") } tasks.jar { @@ -27,27 +24,6 @@ dependencies { testImplementation(libs.assertj.core) } -tasks.register("japicmp") { - dependsOn("jar") - oldClasspath = files(project.baselineJar()) - newClasspath = files(tasks.jar.get().archiveFile) - isOnlyBinaryIncompatibleModified = true - isFailOnModification = true - txtOutputFile = file("$buildDir/reports/japi.txt") - isIgnoreMissingClasses = true - isIncludeSynthetic = true - packageExcludes = listOf( - "okhttp3.internal.duplex", - "okhttp3.mockwebserver.internal", - "okhttp3.mockwebserver.internal.duplex", - ) - classExcludes = listOf( - // Became "final" in 4.10.0. - "okhttp3.mockwebserver.QueueDispatcher" - ) -}.let(tasks.check::dependsOn) - - mavenPublishing { configure(KotlinJvm(javadocJar = JavadocJar.Dokka("dokkaGfm"))) } diff --git a/okhttp-logging-interceptor/build.gradle.kts b/okhttp-logging-interceptor/build.gradle.kts index 0a308fcd0..f020af7df 100644 --- a/okhttp-logging-interceptor/build.gradle.kts +++ b/okhttp-logging-interceptor/build.gradle.kts @@ -1,14 +1,11 @@ -import com.android.build.gradle.internal.tasks.factory.dependsOn import com.vanniktech.maven.publish.JavadocJar import com.vanniktech.maven.publish.KotlinJvm -import me.champeau.gradle.japicmp.JapicmpTask plugins { kotlin("jvm") id("org.jetbrains.dokka") id("com.vanniktech.maven.publish.base") id("binary-compatibility-validator") - id("me.champeau.gradle.japicmp") } project.applyOsgi( @@ -30,17 +27,6 @@ dependencies { testImplementation(libs.assertj.core) } -tasks.register("japicmp") { - dependsOn("jar") - oldClasspath = files(project.baselineJar()) - newClasspath = files(tasks.jar.get().archiveFile) - isOnlyBinaryIncompatibleModified = true - isFailOnModification = true - txtOutputFile = file("$buildDir/reports/japi.txt") - isIgnoreMissingClasses = true - isIncludeSynthetic = true -}.let(tasks.check::dependsOn) - mavenPublishing { configure(KotlinJvm(javadocJar = JavadocJar.Dokka("dokkaGfm"))) } diff --git a/okhttp-sse/build.gradle.kts b/okhttp-sse/build.gradle.kts index f388af8fc..793e778b4 100644 --- a/okhttp-sse/build.gradle.kts +++ b/okhttp-sse/build.gradle.kts @@ -1,14 +1,11 @@ -import com.android.build.gradle.internal.tasks.factory.dependsOn import com.vanniktech.maven.publish.JavadocJar import com.vanniktech.maven.publish.KotlinJvm -import me.champeau.gradle.japicmp.JapicmpTask plugins { kotlin("jvm") id("org.jetbrains.dokka") id("com.vanniktech.maven.publish.base") id("binary-compatibility-validator") - id("me.champeau.gradle.japicmp") } project.applyOsgi( @@ -29,20 +26,6 @@ dependencies { testCompileOnly(libs.findbugs.jsr305) } -tasks.register("japicmp") { - dependsOn("jar") - oldClasspath = files(project.baselineJar()) - newClasspath = files(tasks.jar.get().archiveFile) - isOnlyBinaryIncompatibleModified = true - isFailOnModification = true - txtOutputFile = file("$buildDir/reports/japi.txt") - isIgnoreMissingClasses = true - isIncludeSynthetic = true - packageExcludes = listOf( - "okhttp3.internal.sse" - ) -}.let(tasks.check::dependsOn) - mavenPublishing { configure(KotlinJvm(javadocJar = JavadocJar.Dokka("dokkaGfm"))) } diff --git a/okhttp-tls/build.gradle.kts b/okhttp-tls/build.gradle.kts index 250eeecaa..e429ce0a6 100644 --- a/okhttp-tls/build.gradle.kts +++ b/okhttp-tls/build.gradle.kts @@ -1,14 +1,11 @@ -import com.android.build.gradle.internal.tasks.factory.dependsOn import com.vanniktech.maven.publish.JavadocJar import com.vanniktech.maven.publish.KotlinJvm -import me.champeau.gradle.japicmp.JapicmpTask plugins { kotlin("jvm") id("org.jetbrains.dokka") id("com.vanniktech.maven.publish.base") id("binary-compatibility-validator") - id("me.champeau.gradle.japicmp") id("ru.vyarus.animalsniffer") } @@ -35,20 +32,6 @@ animalsniffer { ignore = listOf("javax.net.ssl.X509ExtendedTrustManager") } -tasks.register("japicmp") { - dependsOn("jar") - oldClasspath = files(project.baselineJar()) - newClasspath = files(tasks.jar.get().archiveFile) - isOnlyBinaryIncompatibleModified = true - isFailOnModification = true - txtOutputFile = file("$buildDir/reports/japi.txt") - isIgnoreMissingClasses = true - isIncludeSynthetic = true - packageExcludes = listOf( - "okhttp3.tls.internal" - ) -}.let(tasks.check::dependsOn) - mavenPublishing { configure(KotlinJvm(javadocJar = JavadocJar.Dokka("dokkaGfm"))) } diff --git a/okhttp-urlconnection/build.gradle.kts b/okhttp-urlconnection/build.gradle.kts index 0abd7bb3b..d15f72806 100644 --- a/okhttp-urlconnection/build.gradle.kts +++ b/okhttp-urlconnection/build.gradle.kts @@ -1,14 +1,11 @@ -import com.android.build.gradle.internal.tasks.factory.dependsOn import com.vanniktech.maven.publish.JavadocJar import com.vanniktech.maven.publish.KotlinJvm -import me.champeau.gradle.japicmp.JapicmpTask plugins { kotlin("jvm") id("org.jetbrains.dokka") id("com.vanniktech.maven.publish.base") id("binary-compatibility-validator") - id("me.champeau.gradle.japicmp") } project.applyOsgi( @@ -30,18 +27,6 @@ dependencies { testImplementation(libs.assertj.core) } -tasks.register("japicmp") { - dependsOn("jar") - oldClasspath = files(project.baselineJar()) - newClasspath = files(tasks.jar.get().archiveFile) - isOnlyBinaryIncompatibleModified = true - isFailOnModification = true - txtOutputFile = file("$buildDir/reports/japi.txt") - isIgnoreMissingClasses = true - isIncludeSynthetic = true -}.let(tasks.check::dependsOn) - - mavenPublishing { configure(KotlinJvm(javadocJar = JavadocJar.Dokka("dokkaGfm"))) } diff --git a/okhttp/build.gradle.kts b/okhttp/build.gradle.kts index c27966309..3491226d5 100644 --- a/okhttp/build.gradle.kts +++ b/okhttp/build.gradle.kts @@ -1,7 +1,5 @@ -import com.android.build.gradle.internal.tasks.factory.dependsOn import com.vanniktech.maven.publish.JavadocJar import com.vanniktech.maven.publish.KotlinMultiplatform -import me.champeau.gradle.japicmp.JapicmpTask import org.jetbrains.kotlin.gradle.dsl.KotlinCompile plugins { @@ -9,7 +7,6 @@ plugins { id("org.jetbrains.dokka") id("com.vanniktech.maven.publish.base") id("binary-compatibility-validator") - id("me.champeau.gradle.japicmp") } kotlin { @@ -185,69 +182,6 @@ dependencies { osgiTestDeploy(libs.kotlin.stdlib.osgi) } -tasks.register("japicmp") { - dependsOn("jvmJar") - oldClasspath = files(project.baselineJar()) - newClasspath = files(tasks.getByName("jvmJar").archiveFile) - isOnlyBinaryIncompatibleModified = true - isFailOnModification = true - txtOutputFile = file("$buildDir/reports/japi.txt") - isIgnoreMissingClasses = true - isIncludeSynthetic = true - packageExcludes = listOf( - "okhttp3.internal", - "okhttp3.internal.annotations", - "okhttp3.internal.cache", - "okhttp3.internal.cache2", - "okhttp3.internal.connection", - "okhttp3.internal.http", - "okhttp3.internal.http1", - "okhttp3.internal.http2", - "okhttp3.internal.io", - "okhttp3.internal.platform", - "okhttp3.internal.proxy", - "okhttp3.internal.publicsuffix", - "okhttp3.internal.tls", - "okhttp3.internal.ws", - ) - classExcludes = listOf( - // Package-private in 3.x, internal in 4.0.0: - "okhttp3.Cache\$CacheResponseBody\$1", - "okhttp3.RealCall\$AsyncCall", - ) - methodExcludes = listOf( - // Became "final" despite a non-final enclosing class in 4.0.0: - "okhttp3.OkHttpClient#authenticator()", - "okhttp3.OkHttpClient#cache()", - "okhttp3.OkHttpClient#callTimeoutMillis()", - "okhttp3.OkHttpClient#certificatePinner()", - "okhttp3.OkHttpClient#connectionPool()", - "okhttp3.OkHttpClient#connectionSpecs()", - "okhttp3.OkHttpClient#connectTimeoutMillis()", - "okhttp3.OkHttpClient#cookieJar()", - "okhttp3.OkHttpClient#dispatcher()", - "okhttp3.OkHttpClient#dns()", - "okhttp3.OkHttpClient#eventListenerFactory()", - "okhttp3.OkHttpClient#followRedirects()", - "okhttp3.OkHttpClient#followSslRedirects()", - "okhttp3.OkHttpClient#hostnameVerifier()", - "okhttp3.OkHttpClient#interceptors()", - "okhttp3.OkHttpClient#networkInterceptors()", - "okhttp3.OkHttpClient#pingIntervalMillis()", - "okhttp3.OkHttpClient#protocols()", - "okhttp3.OkHttpClient#proxy()", - "okhttp3.OkHttpClient#proxyAuthenticator()", - "okhttp3.OkHttpClient#proxySelector()", - "okhttp3.OkHttpClient#readTimeoutMillis()", - "okhttp3.OkHttpClient#retryOnConnectionFailure()", - "okhttp3.OkHttpClient#socketFactory()", - "okhttp3.OkHttpClient#sslSocketFactory()", - "okhttp3.OkHttpClient#writeTimeoutMillis()", - "okhttp3.OkHttpClient#writeTimeoutMillis()", - "okhttp3.Request\$Builder#delete()", - ) -}.let(tasks.check::dependsOn) - mavenPublishing { configure(KotlinMultiplatform(javadocJar = JavadocJar.Dokka("dokkaGfm"))) }