Skip to content

Instantly share code, notes, and snippets.

@martinbonnin
Created January 31, 2020 18:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save martinbonnin/3499f3654cf801a4a72d3208400da8d8 to your computer and use it in GitHub Desktop.
Save martinbonnin/3499f3654cf801a4a72d3208400da8d8 to your computer and use it in GitHub Desktop.
import groovy.text.SimpleTemplateEngine
apply(plugin = "me.champeau.gradle.japicmp")
tasks.named("jar") {
this as org.gradle.jvm.tasks.Jar
manifest {
attributes(mapOf("Automatic-Module-Name" to "okhttp3"))
}
}
sourceSets {
main.get().java.srcDir("$buildDir/generated/sources/java-templates/java/main")
}
tasks.named("compileKotlin") {
dependsOn(tasks.named("copyJavaTemplates"))
}
tasks.register("copyJavaTemplates", Copy::class.java) {
from("src/main/java-templates")
into("$buildDir/generated/sources/java-templates/java/main")
expand(mutableMapOf("projectVersion" to "${project.version}"))
filteringCharset = "UTF-8"
}
dependencies {
val extra = rootProject.extra
api((extra["deps"] as Map<String, String>)["okio"]!!)
api((extra["deps"] as Map<String, String>)["kotlinStdlib"]!!)
compileOnly((extra["deps"] as Map<String, String>)["android"]!!)
compileOnly((extra["deps"] as Map<String, String>)["conscrypt"]!!)
compileOnly((extra["deps"] as Map<String, String>)["openjsse"]!!)
compileOnly((extra["deps"] as Map<String, String>)["jsr305"]!!)
compileOnly((extra["deps"] as Map<String, String>)["animalSniffer"]!!)
testImplementation(project(":okhttp-testing-support"))
testImplementation(project(":okhttp-tls"))
testImplementation(project(":okhttp-urlconnection"))
testImplementation(project(":mockwebserver"))
testImplementation(project(":okhttp-logging-interceptor"))
testImplementation((extra["deps"] as Map<String, String>)["conscrypt"]!!)
testImplementation((extra["deps"] as Map<String, String>)["junit"]!!)
testImplementation((extra["deps"] as Map<String, String>)["assertj"]!!)
testImplementation((extra["deps"] as Map<String, String>)["openjsse"]!!)
testCompileOnly((extra["deps"] as Map<String, String>)["jsr305"]!!)
}
project.afterEvaluate {
tasks.named("dokka") {
this as org.jetbrains.dokka.gradle.DokkaTask
outputDirectory = "$rootDir/docs/4.x"
outputFormat = "gfm"
}
}
animalsniffer {
ignore = listOf("javax.net.ssl.SSLParameters", "javax.net.ssl.SSLSocket")
}
val japicmp = tasks.register("japicmp", me.champeau.gradle.japicmp.JapicmpTask::class.java) {
val jarTask = tasks.named("jar").get() as org.gradle.jvm.tasks.Jar
dependsOn(jarTask)
val extra = rootProject.extra
val baselineJar = extra["baselineJar"] as groovy.lang.Closure<groovy.lang.GString>
val baselineVersion = extra["baselineVersion"]
oldClasspath = files(baselineJar.call(project, baselineVersion))
newClasspath = files(jarTask.archivePath)
setOnlyBinaryIncompatibleModified(true)
setFailOnModification(true)
txtOutputFile = file("$buildDir/reports/japi.txt")
setIgnoreMissingClasses(true)
setIncludeSynthetic(true)
packageExcludes = listOf(
"okhttp3.internal",
"okhttp3.internal.annotations",
"okhttp3.internal.cache",
"okhttp3.internal.cache2",
"okhttp3.internal.connection",
"okhttp3.internal.http",
"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()"
)
}
tasks.named("check") {
dependsOn(japicmp)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment