diff --git a/gen-tests.gradle.kts b/gen-tests.gradle.kts index 12e3535fd1..a7158f4770 100644 --- a/gen-tests.gradle.kts +++ b/gen-tests.gradle.kts @@ -35,7 +35,7 @@ dependencies { // JAVA -val generateJavaTests by tasks.creating(JavaExec::class) { +val generateJavaTests by tasks.registering(JavaExec::class) { group = "Generate Tests" description = "Generates Java classes from the test protos" classpath = wire @@ -47,7 +47,7 @@ val generateJavaTests by tasks.creating(JavaExec::class) { ) + PROTOS } -val generateKotlinClassAmongJavaTests by tasks.creating(JavaExec::class) { +val generateKotlinClassAmongJavaTests by tasks.registering(JavaExec::class) { group = "Generate Tests" description = "Generates Kotlin classes from the Java test protos" classpath = wire @@ -61,7 +61,7 @@ val generateKotlinClassAmongJavaTests by tasks.creating(JavaExec::class) { // NO OPTIONS -val generateNoOptionsTests by tasks.creating(JavaExec::class) { +val generateNoOptionsTests by tasks.registering(JavaExec::class) { group = "Generate Tests" description = "Generates Java classes with no options from the test protos" classpath = wire @@ -155,7 +155,7 @@ val generateGsonAdapterKotlinTests by tasks.creating(JavaExec::class) { ) } -val generateGsonTests by tasks.creating { +val generateGsonTests by tasks.registering { group = "Generate Tests" description = "Generates Java and Kotlin classes that use Gson from the test protos" dependsOn( @@ -536,7 +536,7 @@ val generateSwiftProto2Tests by tasks.creating(JavaExec::class) { ) } -val generateSwiftTests by tasks.creating { +val generateSwiftTests by tasks.registering { group = "Generate Tests" description = "Generates Swift classes from the test protos" if (project.properties.get("swift") != "false") { @@ -638,7 +638,7 @@ val generateMoshiAdapterKotlinTests by tasks.creating(JavaExec::class) { ) } -val generateMoshiTests by tasks.creating { +val generateMoshiTests by tasks.registering { group = "Generate Tests" description = "Generates Java and Kotlin classes that use Moshi from the test protos" dependsOn( @@ -695,7 +695,7 @@ val generateSharedJsonKotlinTests by tasks.creating(JavaExec::class) { ) } -val generateSharedJson by tasks.creating { +val generateSharedJson by tasks.registering { group = "Generate Tests" description = "Generates Java and Kotlin classes for shared JSON tests" dependsOn( @@ -704,7 +704,7 @@ val generateSharedJson by tasks.creating { ) } -val generateTests by tasks.creating { +val generateTests by tasks.registering { group = "Generate Tests" description = "Generates all test classes" dependsOn( diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 1b33c55baa..8bdaf60c75 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7705927e94..26dec6cde0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip +distributionSha256Sum=a17ddd85a26b6a7f5ddb71ff8b05fc5104c0202c6e64782429790c933686c806 networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 23d15a9367..adff685a03 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -114,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -172,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -212,7 +210,6 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" diff --git a/gradlew.bat b/gradlew.bat index 5eed7ee845..e509b2dd8f 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,11 +70,10 @@ goto fail :execute @rem Setup the command line -set CLASSPATH= @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/wire-benchmarks/build.gradle.kts b/wire-benchmarks/build.gradle.kts index 881c123ff2..7c0bcb687d 100644 --- a/wire-benchmarks/build.gradle.kts +++ b/wire-benchmarks/build.gradle.kts @@ -15,7 +15,7 @@ plugins { sourceSets { main { // Adds protobuf generated classes to our source sets. - java.srcDir("$buildDir/generated/source/proto/main/java") + java.srcDir(layout.buildDirectory.dir("generated/source/proto/main/java")) } } diff --git a/wire-gradle-plugin/src/test/projects/java-project-java-protos/build.gradle b/wire-gradle-plugin/src/test/projects/java-project-java-protos/build.gradle index 278b589879..762605f970 100644 --- a/wire-gradle-plugin/src/test/projects/java-project-java-protos/build.gradle +++ b/wire-gradle-plugin/src/test/projects/java-project-java-protos/build.gradle @@ -15,7 +15,7 @@ buildscript { apply plugin: 'application' apply plugin: 'com.squareup.wire' -mainClassName = 'com.squareup.dinosaurs.Sample' +application.mainClass = "com.squareup.dinosaurs.Sample" repositories { maven { diff --git a/wire-gradle-plugin/src/test/projects/java-project-kotlin-protos/build.gradle b/wire-gradle-plugin/src/test/projects/java-project-kotlin-protos/build.gradle index 972cbe6ae2..833e41f5ed 100644 --- a/wire-gradle-plugin/src/test/projects/java-project-kotlin-protos/build.gradle +++ b/wire-gradle-plugin/src/test/projects/java-project-kotlin-protos/build.gradle @@ -19,7 +19,7 @@ apply plugin: 'application' apply plugin: 'org.jetbrains.kotlin.jvm' apply plugin: 'com.squareup.wire' -mainClassName = 'com.squareup.dinosaurs.Sample' +application.mainClass = "com.squareup.dinosaurs.Sample" repositories { maven { diff --git a/wire-gradle-plugin/src/test/projects/kotlin-project-java-protos/build.gradle b/wire-gradle-plugin/src/test/projects/kotlin-project-java-protos/build.gradle index 33dd16de0e..71c9b3dd20 100644 --- a/wire-gradle-plugin/src/test/projects/kotlin-project-java-protos/build.gradle +++ b/wire-gradle-plugin/src/test/projects/kotlin-project-java-protos/build.gradle @@ -19,7 +19,7 @@ apply plugin: 'application' apply plugin: 'org.jetbrains.kotlin.jvm' apply plugin: 'com.squareup.wire' -mainClassName = 'com.squareup.dinosaurs.Sample' +application.mainClass = "com.squareup.dinosaurs.Sample" repositories { maven { diff --git a/wire-gradle-plugin/src/test/projects/kotlin-project-kotlin-protos/build.gradle b/wire-gradle-plugin/src/test/projects/kotlin-project-kotlin-protos/build.gradle index 3a9b075bb1..3c1ad7d01a 100644 --- a/wire-gradle-plugin/src/test/projects/kotlin-project-kotlin-protos/build.gradle +++ b/wire-gradle-plugin/src/test/projects/kotlin-project-kotlin-protos/build.gradle @@ -19,7 +19,8 @@ apply plugin: 'application' apply plugin: 'org.jetbrains.kotlin.jvm' apply plugin: 'com.squareup.wire' -mainClassName = 'com.squareup.dinosaurs.Sample' +application.mainClass = "com.squareup.dinosaurs.Sample" + repositories { maven { diff --git a/wire-gradle-plugin/src/test/projects/sourcedir-exclude/build.gradle b/wire-gradle-plugin/src/test/projects/sourcedir-exclude/build.gradle index dd45598c5e..d1f0379e1e 100644 --- a/wire-gradle-plugin/src/test/projects/sourcedir-exclude/build.gradle +++ b/wire-gradle-plugin/src/test/projects/sourcedir-exclude/build.gradle @@ -19,7 +19,7 @@ apply plugin: 'application' apply plugin: 'org.jetbrains.kotlin.jvm' apply plugin: 'com.squareup.wire' -mainClassName = 'com.squareup.dinosaurs.Sample' +application.mainClass = "com.squareup.dinosaurs.Sample" repositories { maven { diff --git a/wire-gradle-plugin/src/test/projects/sourcedir-include/build.gradle b/wire-gradle-plugin/src/test/projects/sourcedir-include/build.gradle index 7a8c60504e..e4edf6a54a 100644 --- a/wire-gradle-plugin/src/test/projects/sourcedir-include/build.gradle +++ b/wire-gradle-plugin/src/test/projects/sourcedir-include/build.gradle @@ -19,7 +19,7 @@ apply plugin: 'application' apply plugin: 'org.jetbrains.kotlin.jvm' apply plugin: 'com.squareup.wire' -mainClassName = 'com.squareup.dinosaurs.Sample' +application.mainClass = "com.squareup.dinosaurs.Sample" repositories { maven { diff --git a/wire-reflector/build.gradle.kts b/wire-reflector/build.gradle.kts index cacc50b463..27ac26e759 100644 --- a/wire-reflector/build.gradle.kts +++ b/wire-reflector/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } val main by sourceSets.getting { - java.srcDir("$buildDir/wire") + java.srcDir(layout.buildDirectory.dir("wire")) } dependencies { @@ -35,7 +35,7 @@ val generateReflectionProtos by tasks.registering(JavaExec::class) { classpath = generateReflectionProtosClasspath args( "--proto_path=$projectDir/src/main/resources", - "--kotlin_out=$buildDir/wire", + "--kotlin_out=${layout.buildDirectory.get()}/wire", "grpc/reflection/v1alpha/reflection.proto" ) } diff --git a/wire-tests/build.gradle.kts b/wire-tests/build.gradle.kts index 225a23ab1f..1e377e4559 100644 --- a/wire-tests/build.gradle.kts +++ b/wire-tests/build.gradle.kts @@ -1,5 +1,9 @@ import com.diffplug.gradle.spotless.SpotlessExtension +import org.gradle.kotlin.dsl.sourceSets import org.jetbrains.kotlin.gradle.dsl.JsModuleKind +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet +import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile plugins { @@ -9,44 +13,58 @@ plugins { kotlin { applyDefaultHierarchyTemplate() + registerJavaTest("javaTest") { + java.srcDir("src/jvmJavaTest/proto-java") + java.srcDir("src/jvmJavaTest/proto-kotlin") + } + + registerJavaTest("javaNoOptionsTest") { + java.srcDir("src/jvmJavaNoOptionsTest/proto-java") + } + + registerJavaTest("javaCompactTest") { + java.srcDir("src/jvmJavaCompactTest/proto-java") + } + + registerJavaTest("javaPrunedTest") { + java.srcDir("src/jvmJavaPrunedTest/proto-java") + } + + registerJavaTest("javaAndroidTest") { + java.srcDir("src/jvmJavaAndroidTest/proto-java") + } + + registerJavaTest("javaAndroidCompactTest") { + java.srcDir("src/jvmJavaAndroidCompactTest/proto-java") + } + + registerJavaTest("jsonJavaTest") { + java.srcDir("src/jvmJsonTest/kotlin") + java.srcDir("src/jvmJsonJavaTest/proto-java") + } + + registerJavaTest("jsonKotlinTest") { + java.srcDir("src/jvmJsonTest/kotlin") + java.srcDir("src/jvmJsonKotlinTest/proto-kotlin") + } + jvm { - val kotlinInteropTest by compilations.creating { - defaultSourceSet { - kotlin.srcDir("src/jvmKotlinInteropTest/proto-kotlin") - dependencies { - implementation(projects.wireRuntime) - implementation(libs.kotlin.test.junit) - implementation(libs.assertk) - implementation(libs.kotlin.reflect) - } - } - val jvmKotlinInteropTest by tasks.registering(Test::class) { - classpath = compileDependencyFiles + runtimeDependencyFiles + output.allOutputs - testClassesDirs = output.classesDirs - } - val jvmTest by tasks.getting { - dependsOn(jvmKotlinInteropTest) - dependencies { - implementation(projects.wireGrpcClient) - } + registerKotlinTest("kotlinInteropTest") { + kotlin.srcDir("src/jvmKotlinInteropTest/proto-kotlin") + dependencies { + implementation(projects.wireRuntime) + implementation(libs.kotlin.test.junit) + implementation(libs.assertk) + implementation(libs.kotlin.reflect) } } - val kotlinAndroidTest by compilations.creating { - defaultSourceSet { + registerKotlinTest("kotlinAndroidTest") { kotlin.srcDir("src/jvmKotlinAndroidTest/proto-kotlin") dependencies { implementation(projects.wireRuntime) compileOnly(libs.android) implementation(libs.kotlin.test.junit) implementation(libs.assertk) - } - } - val jvmKotlinAndroidTest by tasks.registering(Test::class) { - classpath = compileDependencyFiles + runtimeDependencyFiles + output.allOutputs - testClassesDirs = output.classesDirs - } - val jvmTest by tasks.getting { - dependsOn(jvmKotlinAndroidTest) } } val kotlinProtoReader32Test by compilations.creating { @@ -67,9 +85,6 @@ kotlin { dependsOn(jvmProtoReader32Test) } } - // FIXME(egor): withJava() has to be declared after all custom compilations. - // See https://youtrack.jetbrains.com/issue/KT-41506. - withJava() } if (System.getProperty("kjs", "true").toBoolean()) { js(IR) { @@ -135,127 +150,90 @@ kotlin { val jvmTest by tasks.getting -for (target in kotlin.targets.matching { it.platformType.name == "jvm" }) { - target.project.sourceSets { - val test by getting { - java.srcDir("src/jvmTest/proto-java") - } - - val javaTest by creating { - java.srcDir("src/jvmJavaTest/proto-java") - java.srcDir("src/jvmJavaTest/proto-kotlin") - } - val jvmJavaTest by tasks.registering(Test::class) { - classpath = javaTest.runtimeClasspath - testClassesDirs = javaTest.output.classesDirs - } - jvmTest.dependsOn(jvmJavaTest) - - val javaNoOptionsTest by creating { - java.srcDir("src/jvmJavaNoOptionsTest/proto-java") - } - val jvmJavaNoOptionsTest by tasks.registering(Test::class) { - classpath = javaNoOptionsTest.runtimeClasspath - testClassesDirs = javaNoOptionsTest.output.classesDirs - } - jvmTest.dependsOn(jvmJavaNoOptionsTest) - - val javaCompactTest by creating { - java.srcDir("src/jvmJavaCompactTest/proto-java") - } - val jvmJavaCompactTest by tasks.registering(Test::class) { - classpath = javaCompactTest.runtimeClasspath - testClassesDirs = javaCompactTest.output.classesDirs +fun KotlinJvmTarget.registerKotlinTest( + name: String, + configureSourceSet: KotlinSourceSet.() -> kotlin.Unit, +) { + val kotlinInteropTest = compilations.create(name) { + defaultSourceSet { + configureSourceSet() } - jvmTest.dependsOn(jvmJavaCompactTest) - - val javaPrunedTest by creating { - java.srcDir("src/jvmJavaPrunedTest/proto-java") - } - val jvmJavaPrunedTest by tasks.registering(Test::class) { - classpath = javaPrunedTest.runtimeClasspath - testClassesDirs = javaPrunedTest.output.classesDirs - } - jvmTest.dependsOn(jvmJavaPrunedTest) - - val javaAndroidTest by creating { - java.srcDir("src/jvmJavaAndroidTest/proto-java") + val jvmKotlinInteropTest by tasks.registering(Test::class) { + classpath = compileDependencyFiles + runtimeDependencyFiles + output.allOutputs + testClassesDirs = output.classesDirs } - val jvmJavaAndroidTest by tasks.registering(Test::class) { - classpath = javaAndroidTest.runtimeClasspath - testClassesDirs = javaAndroidTest.output.classesDirs - } - jvmTest.dependsOn(jvmJavaAndroidTest) - - val javaAndroidCompactTest by creating { - java.srcDir("src/jvmJavaAndroidCompactTest/proto-java") - } - val jvmJavaAndroidCompactTest by tasks.registering(Test::class) { - classpath = javaAndroidCompactTest.runtimeClasspath - testClassesDirs = javaAndroidCompactTest.output.classesDirs + val jvmTest by tasks.getting { + dependsOn(jvmKotlinInteropTest) + dependencies { + implementation(projects.wireGrpcClient) + } } - jvmTest.dependsOn(jvmJavaAndroidCompactTest) + } +} - val jsonJavaTest by creating { - java.srcDir("src/jvmJsonTest/kotlin") - java.srcDir("src/jvmJsonJavaTest/proto-java") +fun KotlinMultiplatformExtension.registerJavaTest( + name: String, // Like jvmJavaTest + configureSourceSet: SourceSet.() -> Unit, +) { + sourceSets { + jvm { } + } + project.sourceSets { + val sourceSet: SourceSet = create(name) { + configureSourceSet() } - val jvmJsonJavaTest by tasks.registering(Test::class) { - classpath = jsonJavaTest.runtimeClasspath - testClassesDirs = jsonJavaTest.output.classesDirs + val taskProvider = tasks.register(name, Test::class) { + classpath = sourceSet.runtimeClasspath + testClassesDirs = sourceSet.output.classesDirs } - jvmTest.dependsOn(jvmJsonJavaTest) + jvmTest.dependsOn(taskProvider) + } +} - val jsonKotlinTest by creating { - java.srcDir("src/jvmJsonTest/kotlin") - java.srcDir("src/jvmJsonKotlinTest/proto-kotlin") - } - val jvmJsonKotlinTest by tasks.registering(Test::class) { - classpath = jsonKotlinTest.runtimeClasspath - testClassesDirs = jsonKotlinTest.output.classesDirs - } - jvmTest.dependsOn(jvmJsonKotlinTest) +sourceSets { + val jvmTest by getting { + java.srcDir("src/jvmTest/proto-java") + } +} - dependencies { - add("javaTestImplementation", projects.wireRuntime) - add("javaNoOptionsTestImplementation", projects.wireRuntime) - add("javaCompactTestImplementation", projects.wireRuntime) - add("javaPrunedTestImplementation", projects.wireRuntime) - add("javaAndroidTestImplementation", projects.wireRuntime) - add("javaAndroidCompactTestImplementation", projects.wireRuntime) - add("jsonJavaTestImplementation", projects.wireRuntime) - add("jsonKotlinTestImplementation", projects.wireRuntime) +dependencies { + add("javaTestImplementation", projects.wireRuntime) + add("javaNoOptionsTestImplementation", projects.wireRuntime) + add("javaCompactTestImplementation", projects.wireRuntime) + add("javaPrunedTestImplementation", projects.wireRuntime) + add("javaAndroidTestImplementation", projects.wireRuntime) + // add("javaAndroidCompactTestImplementation", projects.wireRuntime) + add("jsonJavaTestImplementation", projects.wireRuntime) + add("jsonKotlinTestImplementation", projects.wireRuntime) - add("javaAndroidTestCompileOnly", libs.android) - add("javaAndroidCompactTestCompileOnly", libs.android) - add("javaAndroidTestCompileOnly", libs.androidx.annotations) - add("javaAndroidCompactTestCompileOnly", libs.androidx.annotations) + add("javaAndroidTestCompileOnly", libs.android) + // add("javaAndroidCompactTestCompileOnly", libs.android) + add("javaAndroidTestCompileOnly", libs.androidx.annotations) + // add("javaAndroidCompactTestCompileOnly", libs.androidx.annotations) - add("javaTestImplementation", libs.kotlin.test.junit) - add("javaTestImplementation", libs.assertk) - add("javaTestImplementation", libs.jimfs) - add("javaTestImplementation", libs.truth) - add("jsonJavaTestImplementation", projects.wireMoshiAdapter) - add("jsonJavaTestImplementation", projects.wireGsonSupport) - add("jsonJavaTestImplementation", projects.wireTestUtils) - add("jsonJavaTestImplementation", libs.kotlin.test.junit) - add("jsonJavaTestImplementation", libs.assertk) - add("jsonJavaTestImplementation", libs.jimfs) - add("jsonJavaTestImplementation", libs.truth) - add("jsonKotlinTestImplementation", projects.wireMoshiAdapter) - add("jsonKotlinTestImplementation", projects.wireGsonSupport) - add("jsonKotlinTestImplementation", projects.wireTestUtils) - add("jsonKotlinTestImplementation", libs.kotlin.test.junit) - add("jsonKotlinTestImplementation", libs.assertk) - add("jsonKotlinTestImplementation", libs.jimfs) - add("jsonKotlinTestImplementation", libs.truth) + add("javaTestImplementation", libs.kotlin.test.junit) + add("javaTestImplementation", libs.assertk) + add("javaTestImplementation", libs.jimfs) + add("javaTestImplementation", libs.truth) + add("jsonJavaTestImplementation", projects.wireMoshiAdapter) + add("jsonJavaTestImplementation", projects.wireGsonSupport) + add("jsonJavaTestImplementation", projects.wireTestUtils) + add("jsonJavaTestImplementation", libs.kotlin.test.junit) + add("jsonJavaTestImplementation", libs.assertk) + add("jsonJavaTestImplementation", libs.jimfs) + add("jsonJavaTestImplementation", libs.truth) + add("jsonKotlinTestImplementation", projects.wireMoshiAdapter) + add("jsonKotlinTestImplementation", projects.wireGsonSupport) + add("jsonKotlinTestImplementation", projects.wireTestUtils) + add("jsonKotlinTestImplementation", libs.kotlin.test.junit) + add("jsonKotlinTestImplementation", libs.assertk) + add("jsonKotlinTestImplementation", libs.jimfs) + add("jsonKotlinTestImplementation", libs.truth) - add("jvmJavaTestImplementation", projects.wireMoshiAdapter) - add("jvmJavaTestImplementation", libs.kotlin.reflect) - add("jvmJavaTestImplementation", libs.moshi) - add("jvmJavaTestImplementation", libs.moshiKotlin) - } - } + // add("jvmJavaTestImplementation", projects.wireMoshiAdapter) + // add("jvmJavaTestImplementation", libs.kotlin.reflect) + // add("jvmJavaTestImplementation", libs.moshi) + // add("jvmJavaTestImplementation", libs.moshiKotlin) } configure {