mirror of
https://github.com/square/okhttp.git
synced 2025-11-23 06:42:24 +03:00
Switch from airline to picocli, which is more graal compatible and has nicer default output.
266 lines
8.1 KiB
Groovy
266 lines
8.1 KiB
Groovy
import net.ltgt.gradle.errorprone.CheckSeverity
|
|
|
|
buildscript {
|
|
ext.versions = [
|
|
'android': '4.1.1.4',
|
|
'animalSniffer': '1.17',
|
|
'assertj': '3.11.0',
|
|
'bouncycastle': '1.62',
|
|
'brotli': '0.1.2',
|
|
'checkstyle': '8.15',
|
|
'conscrypt': '2.1.0',
|
|
'findbugs': '3.0.2',
|
|
'guava': '27.0.1-jre',
|
|
'java': '1.8',
|
|
'jnrUnixsocket': '0.22',
|
|
'jsoup': '1.11.3',
|
|
'junit': '4.12',
|
|
'kotlin': '1.3.41',
|
|
'moshi': '1.8.0',
|
|
'okio': '2.2.2',
|
|
'ktlint': '0.31.0',
|
|
'picocli': '4.0.1'
|
|
]
|
|
|
|
ext.deps = [
|
|
'picocli': "info.picocli:picocli:${versions.picocli}",
|
|
'android': "com.google.android:android:${versions.android}",
|
|
'animalSniffer': "org.codehaus.mojo:animal-sniffer-annotations:${versions.animalSniffer}",
|
|
'assertj': "org.assertj:assertj-core:${versions.assertj}",
|
|
'bouncycastle': "org.bouncycastle:bcprov-jdk15on:${versions.bouncycastle}",
|
|
'brotli': "org.brotli:dec:${versions.brotli}",
|
|
'conscrypt': "org.conscrypt:conscrypt-openjdk-uber:${versions.conscrypt}",
|
|
'guava': "com.google.guava:guava:${versions.guava}",
|
|
'jnrUnixsocket': "com.github.jnr:jnr-unixsocket:${versions.jnrUnixsocket}",
|
|
'jsoup': "org.jsoup:jsoup:${versions.jsoup}",
|
|
'jsr305': "com.google.code.findbugs:jsr305:${versions.findbugs}",
|
|
'junit': "junit:junit:${versions.junit}",
|
|
'kotlinStdlib': "org.jetbrains.kotlin:kotlin-stdlib:${versions.kotlin}",
|
|
'moshi': "com.squareup.moshi:moshi:${versions.moshi}",
|
|
'okio': "com.squareup.okio:okio:${versions.okio}"
|
|
]
|
|
|
|
dependencies {
|
|
// TODO(jwilson): configure maven-publish-plugin to limit which artifacts are published.
|
|
classpath 'com.vanniktech:gradle-maven-publish-plugin:0.8.0'
|
|
classpath 'net.ltgt.gradle:gradle-errorprone-plugin:0.7.1'
|
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${versions.kotlin}"
|
|
classpath "org.jetbrains.dokka:dokka-gradle-plugin:0.9.18"
|
|
classpath 'com.diffplug.spotless:spotless-plugin-gradle:3.21.1'
|
|
classpath 'com.android.tools.build:gradle:3.4.1'
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
gradlePluginPortal()
|
|
google()
|
|
}
|
|
}
|
|
|
|
plugins {
|
|
id 'ru.vyarus.animalsniffer' version '1.5.0'
|
|
id 'com.github.johnrengelman.shadow' version '4.0.1'
|
|
id 'me.champeau.gradle.japicmp' version '0.2.6'
|
|
}
|
|
|
|
allprojects {
|
|
group = GROUP
|
|
version = VERSION_NAME
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven {
|
|
url 'https://dl.bintray.com/kotlin/dokka'
|
|
}
|
|
google()
|
|
}
|
|
|
|
task downloadDependencies() {
|
|
description 'Download all dependencies to the Gradle cache'
|
|
doLast {
|
|
configurations.findAll { it.canBeResolved }.files
|
|
}
|
|
}
|
|
}
|
|
|
|
subprojects { project ->
|
|
if (project.name == 'android-test')
|
|
return
|
|
|
|
apply plugin: 'java'
|
|
apply plugin: 'java-library'
|
|
apply plugin: 'org.jetbrains.kotlin.platform.jvm'
|
|
apply plugin: 'checkstyle'
|
|
apply plugin: 'ru.vyarus.animalsniffer'
|
|
apply plugin: 'net.ltgt.errorprone'
|
|
apply plugin: 'org.jetbrains.dokka'
|
|
apply plugin: 'com.diffplug.gradle.spotless'
|
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
|
targetCompatibility = JavaVersion.VERSION_1_8
|
|
|
|
checkstyleMain.exclude '**/CipherSuite.java'
|
|
afterEvaluate {
|
|
checkstyle {
|
|
configFile = rootProject.file('checkstyle.xml')
|
|
toolVersion "${versions.checkstyle}"
|
|
sourceSets = [project.sourceSets.main]
|
|
}
|
|
}
|
|
|
|
// Animal Sniffer confirms we don't use APIs not on both Java 8 and Android 5.
|
|
animalsniffer {
|
|
sourceSets = [sourceSets.main]
|
|
}
|
|
dependencies {
|
|
signature 'net.sf.androidscents.signature:android-api-level-21:5.0.1_r2@signature'
|
|
signature 'org.codehaus.mojo.signature:java18:1.0@signature'
|
|
}
|
|
|
|
spotless {
|
|
kotlin {
|
|
target "**/*.kt"
|
|
ktlint(versions.ktlint).userData(['indent_size': '2', 'continuation_indent_size': '2'])
|
|
}
|
|
}
|
|
|
|
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
|
|
kotlinOptions {
|
|
jvmTarget = "1.8"
|
|
}
|
|
}
|
|
|
|
def platform = System.getProperty("okhttp.platform", "jdk8")
|
|
|
|
test {
|
|
jvmArgs += "-Dlistener=okhttp3.testing.InstallUncaughtExceptionHandlerListener"
|
|
jvmArgs += "-Dokhttp.platform=$platform"
|
|
|
|
maxParallelForks Runtime.runtime.availableProcessors() * 2
|
|
testLogging {
|
|
exceptionFormat = 'full'
|
|
}
|
|
}
|
|
|
|
if (platform == "jdk8alpn") {
|
|
// Add alpn-boot on Java 8 so we can use HTTP/2 without a stable API.
|
|
def alpnBootVersion = alpnBootVersion()
|
|
if (alpnBootVersion != null) {
|
|
dependencies {
|
|
testCompile "org.mortbay.jetty.alpn:alpn-boot:$alpnBootVersion"
|
|
}
|
|
def alpnBootJar = configurations.testCompile.find { it.name.startsWith("alpn-boot-") }
|
|
test {
|
|
jvmArgs += "-Xbootclasspath/p:${alpnBootJar}"
|
|
}
|
|
}
|
|
} else if (platform == "conscrypt") {
|
|
dependencies {
|
|
testRuntime "org.conscrypt:conscrypt-openjdk-uber:${versions.conscrypt}"
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
errorproneJavac 'com.google.errorprone:javac:9+181-r4173-1'
|
|
errorprone 'com.google.errorprone:error_prone_core:2.3.3'
|
|
}
|
|
tasks.withType(JavaCompile).configureEach {
|
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
|
targetCompatibility = JavaVersion.VERSION_1_8
|
|
|
|
options.errorprone {
|
|
check("MissingFail", CheckSeverity.ERROR)
|
|
check("MissingOverride", CheckSeverity.ERROR)
|
|
enabled = JavaVersion.current() < JavaVersion.VERSION_12
|
|
}
|
|
}
|
|
|
|
// We have to set the dokka configuration after evaluation since the com.vanniktech.maven.publish
|
|
// plugin overwrites our dokka configuration on projects where it's applied.
|
|
afterEvaluate { p ->
|
|
p.tasks.dokka {
|
|
reportUndocumented = false
|
|
skipDeprecated = true
|
|
jdkVersion = 8
|
|
packageOptions {
|
|
prefix = "okhttp3.internal"
|
|
suppress = true
|
|
}
|
|
if (project.file('Module.md').exists()) {
|
|
includes = ['Module.md']
|
|
}
|
|
externalDocumentationLink {
|
|
url = new URL("https://square.github.io/okio/2.x/okio/jvm/index.html")
|
|
packageListUrl = new URL("https://square.github.io/okio/2.x/okio/jvm/package-list")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
tasks.wrapper {
|
|
distributionType = Wrapper.DistributionType.ALL
|
|
}
|
|
|
|
/**
|
|
* Returns the alpn-boot version specific to this OpenJDK 8 JVM, or null if this is not a Java 8 VM.
|
|
* https://github.com/xjdr/xio/blob/master/alpn-boot.gradle
|
|
*/
|
|
def alpnBootVersion() {
|
|
def javaVersion = System.getProperty("java.version")
|
|
def patchVersionMatcher = (javaVersion =~ /1\.8\.0_(\d+)(-.*)?/)
|
|
if (!patchVersionMatcher.find()) return null
|
|
def patchVersion = Integer.parseInt(patchVersionMatcher.group(1))
|
|
return alpnBootVersionForPatchVersion(javaVersion, patchVersion)
|
|
}
|
|
|
|
def alpnBootVersionForPatchVersion(String javaVersion, int patchVersion) {
|
|
switch (patchVersion) {
|
|
case 0..24:
|
|
return '8.1.0.v20141016'
|
|
case 25..30:
|
|
return '8.1.2.v20141202'
|
|
case 31..50:
|
|
return '8.1.3.v20150130'
|
|
case 51..59:
|
|
return '8.1.4.v20150727'
|
|
case 60..64:
|
|
return '8.1.5.v20150921'
|
|
case 65..70:
|
|
return '8.1.6.v20151105'
|
|
case 71..77:
|
|
return '8.1.7.v20160121'
|
|
case 78..101:
|
|
return '8.1.8.v20160420'
|
|
case 102..111:
|
|
return '8.1.9.v20160720'
|
|
case 112..120:
|
|
return '8.1.10.v20161026'
|
|
case 121..160:
|
|
return '8.1.11.v20170118'
|
|
case 161..181:
|
|
return '8.1.12.v20180117'
|
|
case 191..212:
|
|
return '8.1.13.v20181017'
|
|
default:
|
|
throw new IllegalStateException("Unexpected Java version: ${javaVersion}")
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns a .jar file for the golden version of this project.
|
|
* https://github.com/Visistema/Groovy1/blob/ba5eb9b2f19ca0cc8927359ce414c4e1974b7016/gradle/binarycompatibility.gradle#L48
|
|
*/
|
|
ext.baselineJar = { project, version ->
|
|
def group = project.property("GROUP")
|
|
def artifactId = project.property("POM_ARTIFACT_ID")
|
|
try {
|
|
String jarFile = "$artifactId-${version}.jar"
|
|
project.group = 'virtual_group_for_japicmp' // Prevent it from resolving the current version.
|
|
def dependency = project.dependencies.create("$group:$artifactId:$version@jar")
|
|
return project.configurations.detachedConfiguration(dependency).files
|
|
.find { (it.name == jarFile) }
|
|
} finally {
|
|
project.group = group
|
|
}
|
|
}
|
|
ext.baselineVersion = "3.14.1"
|