diff --git a/build.gradle.kts b/build.gradle.kts index 42c6bdee9..3f316981f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,13 +3,14 @@ import com.diffplug.gradle.spotless.SpotlessExtension import com.vanniktech.maven.publish.MavenPublishBaseExtension import com.vanniktech.maven.publish.SonatypeHost -import java.net.URI import kotlinx.validation.ApiValidationExtension import org.gradle.api.tasks.testing.logging.TestExceptionFormat import org.jetbrains.dokka.gradle.DokkaTaskPartial +import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import ru.vyarus.gradle.plugin.animalsniffer.AnimalSnifferExtension +import java.net.URI buildscript { dependencies { @@ -143,8 +144,8 @@ subprojects { } tasks.withType { - kotlinOptions { - jvmTarget = JavaVersion.VERSION_1_8.toString() + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) freeCompilerArgs = listOf( "-Xjvm-default=all", ) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index e30c56b5d..90a3bde87 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -23,5 +23,9 @@ repositories { } dependencies { - implementation("biz.aQute.bnd:biz.aQute.bnd.gradle:6.4.0") + // TODO (https://github.com/square/okhttp/issues/8612) we will need a consistent version + // 7.1.0 is used because it avoids this error + // Could not create an instance of type aQute.bnd.gradle.BundleTaskExtension. + // Cannot change attributes of configuration ':native-image-tests:compileClasspath' after it has been locked for mutation + implementation("biz.aQute.bnd:biz.aQute.bnd.gradle:7.1.0") } diff --git a/gradle.properties b/gradle.properties index d963d6a5a..c7af0b38d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,13 +1,11 @@ org.gradle.caching=true -org.gradle.jvmargs='-Dfile.encoding=UTF-8' org.gradle.parallel=true -android.enableJetifier=true + android.useAndroidX=true -kotlin.mpp.stability.nowarn=true -kotlin.js.compiler=ir -kotlin.incremental.js.ir=true + androidBuild=false graalBuild=false loomBuild=false containerTests=false -android.experimental.lint.version=8.2.0 + +org.gradle.jvmargs='-Dfile.encoding=UTF-8' diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f4b21b528..8f30028e5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,17 +1,18 @@ [versions] +# 7.0.0 is JDK 17+ https://github.com/bndtools/bnd/wiki/Changes-in-7.0.0 biz-aQute-bnd = "6.4.0" checkStyle = "10.20.2" com-squareup-moshi = "1.15.1" com-squareup-okio = "3.9.1" de-mannodermaus-junit5 = "1.6.0" graalvm = "22.3.2" -kotlinx-serialization = "1.6.3" -ksp = "1.9.24-1.0.20" +kotlinx-serialization = "1.7.3" +ksp = "2.1.0-1.0.29" mockserverClient = "5.15.0" org-bouncycastle = "1.76" org-conscrypt = "2.5.2" -org-jetbrains-coroutines = "1.8.1" -org-jetbrains-kotlin = "1.9.25" +org-jetbrains-coroutines = "1.9.0" +org-jetbrains-kotlin = "2.1.0" org-junit-jupiter = "5.11.3" retrofit = "2.11.0" testcontainers = "1.20.4" @@ -38,7 +39,7 @@ conscrypt-openjdk = { module = "org.conscrypt:conscrypt-openjdk-uber", version.r converter-moshi = { module = "com.squareup.retrofit2:converter-moshi", version.ref = "retrofit" } eclipseOsgi = "org.eclipse.platform:org.eclipse.osgi:3.21.0" findbugs-jsr305 = "com.google.code.findbugs:jsr305:3.0.2" -gradlePlugin-android = "com.android.tools.build:gradle:8.2.0" +gradlePlugin-android = "com.android.tools.build:gradle:8.7.3" gradlePlugin-androidJunit5 = "de.mannodermaus.gradle.plugins:android-junit5:1.11.2.0" gradlePlugin-animalsniffer = "ru.vyarus:gradle-animalsniffer-plugin:1.7.2" gradlePlugin-binaryCompatibilityValidator = "org.jetbrains.kotlinx.binary-compatibility-validator:org.jetbrains.kotlinx.binary-compatibility-validator.gradle.plugin:0.16.3" @@ -87,14 +88,14 @@ openjsse = "org.openjsse:openjsse:1.1.14" playservices-safetynet = "com.google.android.gms:play-services-safetynet:18.1.0" retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" } robolectric-android = "org.robolectric:android-all:14-robolectric-10818077" -robolectric = "org.robolectric:robolectric:4.12.2" +robolectric = "org.robolectric:robolectric:4.14.1" signature-android-apilevel21 = "net.sf.androidscents.signature:android-api-level-21:5.0.1_r2" signature-android-apilevel24 = "net.sf.androidscents.signature:android-api-level-24:7.0_r2" squareup-moshi = { module = "com.squareup.moshi:moshi", version.ref = "com-squareup-moshi" } squareup-moshi-compiler = { module = "com.squareup.moshi:moshi-kotlin-codegen", version.ref = "com-squareup-moshi" } squareup-moshi-kotlin = { module = "com.squareup.moshi:moshi-kotlin", version.ref = "com-squareup-moshi" } squareup-okhttp-icu = "com.squareup.okhttpicu:okhttp-icu:0.2.0" -squareup-kotlinPoet = "com.squareup:kotlinpoet:1.17.0" +squareup-kotlinPoet = "com.squareup:kotlinpoet:1.18.1" squareup-okio = { module = "com.squareup.okio:okio", version.ref = "com-squareup-okio" } squareup-okio-fakefilesystem = { module = "com.squareup.okio:okio-fakefilesystem", version.ref = "com-squareup-okio" } squareup-okio-nodefilesystem = { module = "com.squareup.okio:okio-nodefilesystem", version.ref = "com-squareup-okio" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e6aba2515..c1d5e0185 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/okcurl/build.gradle.kts b/okcurl/build.gradle.kts index 77734c77c..868ee0ee0 100644 --- a/okcurl/build.gradle.kts +++ b/okcurl/build.gradle.kts @@ -12,7 +12,7 @@ plugins { val copyResourcesTemplates = tasks.register("copyResourcesTemplates") { from("src/main/resources-templates") - into("$buildDir/generated/resources-templates") + into(layout.buildDirectory.dir("generated/resources-templates")) expand("projectVersion" to "${project.version}") filteringCharset = Charsets.UTF_8.toString() } diff --git a/okhttp-coroutines/src/test/kotlin/okhttp3/coroutines/ExecuteAsyncTest.kt b/okhttp-coroutines/src/test/kotlin/okhttp3/coroutines/ExecuteAsyncTest.kt index 6f436ba0b..1a4d252ec 100644 --- a/okhttp-coroutines/src/test/kotlin/okhttp3/coroutines/ExecuteAsyncTest.kt +++ b/okhttp-coroutines/src/test/kotlin/okhttp3/coroutines/ExecuteAsyncTest.kt @@ -14,6 +14,8 @@ * limitations under the License. * */ +@file:OptIn(ExperimentalCoroutinesApi::class) + package okhttp3.coroutines import assertk.assertThat @@ -25,6 +27,7 @@ import kotlin.test.assertFailsWith import kotlin.time.Duration.Companion.seconds import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.TimeoutCancellationException import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.job diff --git a/okhttp/build.gradle.kts b/okhttp/build.gradle.kts index 084db6e64..60a7aa6cf 100644 --- a/okhttp/build.gradle.kts +++ b/okhttp/build.gradle.kts @@ -19,7 +19,7 @@ fun ByteArray.toByteStringExpression(): String { val copyKotlinTemplates = tasks.register("copyKotlinTemplates") { from("src/main/kotlinTemplates") - into("$buildDir/generated/sources/kotlinTemplates") + into(layout.buildDirectory.dir("generated/sources/kotlinTemplates")) // Tag as an input to regenerate after an update inputs.file("src/test/resources/okhttp3/internal/publicsuffix/PublicSuffixDatabase.gz") @@ -44,9 +44,9 @@ dependencies { generateIdnaMappingTableConfiguration(projects.okhttpIdnaMappingTable) } val generateIdnaMappingTable by tasks.creating(JavaExec::class.java) { - outputs.dir("$buildDir/generated/sources/idnaMappingTable") + outputs.dir(layout.buildDirectory.dir("generated/sources/idnaMappingTable")) mainClass.set("okhttp3.internal.idn.GenerateIdnaMappingTableCode") - args("$buildDir/generated/sources/idnaMappingTable") + args(layout.buildDirectory.dir("generated/sources/idnaMappingTable").get()) classpath = generateIdnaMappingTableConfiguration } @@ -109,7 +109,7 @@ val osgiTestDeploy: Configuration by configurations.creating val copyOsgiTestDeployment by tasks.creating(Copy::class.java) { from(osgiTestDeploy) - into("$buildDir/resources/test/okhttp3/osgi/deployments") + into(layout.buildDirectory.dir("resources/test/okhttp3/osgi/deployments")) } tasks.getByName("test") { dependsOn(copyOsgiTestDeployment)