diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml index 8cedc154e192..8425d18332d8 100644 --- a/.azure/pipelines/jobs/default-build.yml +++ b/.azure/pipelines/jobs/default-build.yml @@ -106,7 +106,7 @@ jobs: # See https://github.com/dotnet/arcade/blob/master/Documentation/ChoosingAMachinePool.md pool: ${{ if eq(parameters.agentOs, 'macOS') }}: - vmImage: macOS-12 + vmImage: macOS-13 ${{ if eq(parameters.agentOs, 'Linux') }}: ${{ if eq(parameters.useHostedUbuntu, true) }}: vmImage: ubuntu-20.04 @@ -164,8 +164,8 @@ jobs: - script: df -h displayName: Disk size - ${{ if eq(parameters.agentOs, 'macOS') }}: - - script: sudo xcode-select -s /Applications/Xcode_14.2.0.app/Contents/Developer - displayName: Use XCode 14.2.0 + - script: sudo xcode-select -s /Applications/Xcode_15.2.0.app/Contents/Developer + displayName: Use XCode 15.2.0 - checkout: self clean: true - ${{ if and(eq(parameters.agentOs, 'Windows'), eq(parameters.isAzDOTestingJob, true)) }}: @@ -323,7 +323,7 @@ jobs: pool: ${{ if eq(parameters.agentOs, 'macOS') }}: name: Azure Pipelines - image: macOS-12 + image: macOS-13 os: macOS ${{ if eq(parameters.agentOs, 'Linux') }}: name: $(DncEngInternalBuildPool) @@ -391,8 +391,8 @@ jobs: - script: df -h displayName: Disk size - ${{ if eq(parameters.agentOs, 'macOS') }}: - - script: sudo xcode-select -s /Applications/Xcode_14.2.0.app/Contents/Developer - displayName: Use XCode 14.2.0 + - script: sudo xcode-select -s /Applications/Xcode_15.2.0.app/Contents/Developer + displayName: Use XCode 15.2.0 - checkout: self clean: true - ${{ if and(eq(parameters.agentOs, 'Windows'), eq(parameters.isAzDOTestingJob, true)) }}: diff --git a/eng/targets/Java.Common.targets b/eng/targets/Java.Common.targets index c8905b10c4b6..81c643e60c27 100644 --- a/eng/targets/Java.Common.targets +++ b/eng/targets/Java.Common.targets @@ -64,8 +64,8 @@ - - + + diff --git a/global.json b/global.json index 14857a9fdd8e..755d5c05f253 100644 --- a/global.json +++ b/global.json @@ -24,7 +24,7 @@ "xcopy-msbuild": "17.1.0" }, "native-tools": { - "jdk": "11" + "jdk": "11.0.24" }, "msbuild-sdks": { "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24516.2", diff --git a/src/SignalR/clients/java/signalr/build.gradle b/src/SignalR/clients/java/signalr/build.gradle index 7314185e2fa4..895f8c4338d3 100644 --- a/src/SignalR/clients/java/signalr/build.gradle +++ b/src/SignalR/clients/java/signalr/build.gradle @@ -6,13 +6,12 @@ buildscript { } dependencies { classpath "com.diffplug.spotless:spotless-plugin-gradle:6.6.1" - classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.0' } } plugins { id 'java' - id 'maven' + id 'maven-publish' } allprojects { @@ -22,7 +21,9 @@ allprojects { // If we're run from outside MSBuild, just assign a bogus dev version. version project.findProperty('packageVersion') ?: "99.99.99-dev" - sourceCompatibility = 1.8 + java { + sourceCompatibility = 1.8 + } repositories { mavenCentral() @@ -52,4 +53,4 @@ spotless { indentWithSpaces(4) removeUnusedImports() // removes any unused imports } -} \ No newline at end of file +} diff --git a/src/SignalR/clients/java/signalr/core/build.gradle b/src/SignalR/clients/java/signalr/core/build.gradle index 8d6dbc010274..17961beef23b 100644 --- a/src/SignalR/clients/java/signalr/core/build.gradle +++ b/src/SignalR/clients/java/signalr/core/build.gradle @@ -1,10 +1,15 @@ plugins { id 'java' - id 'maven' + id 'maven-publish' } group 'com.microsoft.signalr' +java { + withJavadocJar() + withSourcesJar() +} + dependencies { implementation 'com.google.code.gson:gson:2.8.9' implementation 'com.squareup.okhttp3:okhttp:4.12.0' @@ -12,49 +17,51 @@ dependencies { implementation 'org.slf4j:slf4j-api:1.7.25' } -archivesBaseName = 'signalr' - -task sourceJar(type: Jar) { - classifier "sources" - from sourceSets.main.allJava +base { + archivesName = 'signalr' } -task javadocJar(type: Jar, dependsOn: javadoc) { - classifier "javadoc" - from javadoc.destinationDir -} +publishing { + publications { + release(MavenPublication) { + from components.java -task generatePOM { - pom { - project { artifactId 'signalr' - inceptionYear '2018' description 'ASP.NET Core SignalR Client for Java applications' - url 'https://github.com/dotnet/aspnetcore' - name groupId + ':' + artifactId - licenses { - license { - name 'MIT License' - url 'https://opensource.org/licenses/MIT' - distribution 'repo' + + pom { + packaging = 'jar' + inceptionYear = '2018' + url = 'https://github.com/dotnet/aspnetcore' + name = groupId + ':' + artifactId + licenses { + license { + name = 'MIT License' + url = 'https://opensource.org/licenses/MIT' + distribution = 'repo' + } } - } - scm { - connection 'scm:git:https://github.com/dotnet/aspnetcore.git' - developerConnection 'scm:git:https://github.com/dotnet/aspnetcore.git' - url 'https://github.com/dotnet/aspnetcore/tree/main' - } - developers { - developer { - id 'microsoft' - name 'Microsoft' + scm { + connection = 'scm:git:https://github.com/dotnet/aspnetcore.git' + developerConnection = 'scm:git:https://github.com/dotnet/aspnetcore.git' + url = 'https://github.com/dotnet/aspnetcore/tree/main' + } + developers { + developer { + id = 'microsoft' + name = 'Microsoft' + } } } } - }.writeTo("${buildDir}/libs/signalr-${project.version}.pom") + } } -task createPackage(dependsOn: [jar,sourceJar,javadocJar,generatePOM]) +tasks.withType(GenerateMavenPom).all { + def matcher = name =~ /generatePomFileFor(\w+)Publication/ + def publicationName = matcher[0][1] + destination = layout.buildDirectory.file("libs/signalr-${project.version}.pom").get().asFile +} task generateVersionClass { inputs.property "version", project.version diff --git a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/DefaultHttpClient.java b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/DefaultHttpClient.java index 767f306cd9b6..3ef3a6968843 100644 --- a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/DefaultHttpClient.java +++ b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/DefaultHttpClient.java @@ -116,9 +116,9 @@ public Single send(HttpRequest httpRequest, ByteBuffer bodyContent case "POST": RequestBody body; if (bodyContent != null) { - body = RequestBody.create(MediaType.parse("text/plain"), ByteString.of(bodyContent)); + body = RequestBody.Companion.create(ByteString.of(bodyContent), MediaType.parse("text/plain")); } else { - body = RequestBody.create(null, new byte[]{}); + body = RequestBody.Companion.create(new byte[]{}, null); } requestBuilder.post(body); diff --git a/src/SignalR/clients/java/signalr/gradle/wrapper/gradle-wrapper.properties b/src/SignalR/clients/java/signalr/gradle/wrapper/gradle-wrapper.properties index 3eb10089fafd..df5ca3a8b779 100644 --- a/src/SignalR/clients/java/signalr/gradle/wrapper/gradle-wrapper.properties +++ b/src/SignalR/clients/java/signalr/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=23e7d37e9bb4f8dabb8a3ea7fdee9dd0428b9b1a71d298aefd65b11dccea220f -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip +distributionSha256Sum=5b9c5eb3f9fc2c94abaea57d90bd78747ca117ddbbf96c859d3741181a12bf2a +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/SignalR/clients/java/signalr/messagepack/build.gradle b/src/SignalR/clients/java/signalr/messagepack/build.gradle index 4787c62e3aae..492d0dbc6d16 100644 --- a/src/SignalR/clients/java/signalr/messagepack/build.gradle +++ b/src/SignalR/clients/java/signalr/messagepack/build.gradle @@ -1,56 +1,64 @@ plugins { id 'java' - id 'maven' + id 'maven-publish' } group 'com.microsoft.signalr.messagepack' +java +{ + withJavadocJar() + withSourcesJar() +} + dependencies { implementation project(':core') - compile 'org.msgpack:msgpack-core:0.8.20' - compile 'org.msgpack:jackson-dataformat-msgpack:0.8.20' + implementation 'org.msgpack:msgpack-core:0.8.20' + implementation 'org.msgpack:jackson-dataformat-msgpack:0.8.20' } -archivesBaseName = 'signalr-messagepack' - -task sourceJar(type: Jar) { - classifier "sources" - from sourceSets.main.allJava +base { + archivesName = 'signalr-messagepack' } -task javadocJar(type: Jar, dependsOn: javadoc) { - classifier "javadoc" - from javadoc.destinationDir -} +publishing { + publications { + release(MavenPublication) { + from components.java -task generatePOM { - pom { - project { artifactId 'signalr-messagepack' - inceptionYear '2020' description 'MessagePack protocol implementation for ASP.NET Core SignalR Client for Java applications' - url 'https://github.com/dotnet/aspnetcore' - name groupId + ':' + artifactId - licenses { - license { - name 'MIT License' - url 'https://opensource.org/licenses/MIT' - distribution 'repo' + + pom { + packaging = 'jar' + inceptionYear = '2020' + url = 'https://github.com/dotnet/aspnetcore' + name = groupId + ':' + artifactId + licenses { + license { + name = 'MIT License' + url = 'https://opensource.org/licenses/MIT' + distribution = 'repo' + } } - } - scm { - connection 'scm:git:https://github.com/dotnet/aspnetcore.git' - developerConnection 'scm:git:https://github.com/dotnet/aspnetcore.git' - url 'https://github.com/dotnet/aspnetcore/tree/main' - } - developers { - developer { - id 'microsoft' - name 'Microsoft' + scm { + connection = 'scm:git:https://github.com/dotnet/aspnetcore.git' + developerConnection = 'scm:git:https://github.com/dotnet/aspnetcore.git' + url = 'https://github.com/dotnet/aspnetcore/tree/main' + } + developers { + developer { + id = 'microsoft' + name = 'Microsoft' + } } } } - }.writeTo("${buildDir}/libs/signalr-messagepack-${project.version}.pom") + } } -task createPackage(dependsOn: [jar,sourceJar,javadocJar,generatePOM]) +tasks.withType(GenerateMavenPom).all { + def matcher = name =~ /generatePomFileFor(\w+)Publication/ + def publicationName = matcher[0][1] + destination = layout.buildDirectory.file("libs/signalr-messagepack-${project.version}.pom").get().asFile +} diff --git a/src/SignalR/clients/java/signalr/test/build.gradle b/src/SignalR/clients/java/signalr/test/build.gradle index 2fefd54f6481..27b81b32c947 100644 --- a/src/SignalR/clients/java/signalr/test/build.gradle +++ b/src/SignalR/clients/java/signalr/test/build.gradle @@ -1,16 +1,61 @@ -apply plugin: 'org.junit.platform.gradle.plugin' +plugins { + id 'java' +} + +configurations { + antJUnit +} dependencies { - implementation 'org.junit.jupiter:junit-jupiter-api:5.3.1' - compile 'org.junit.jupiter:junit-jupiter-params:5.3.1' - runtime 'org.junit.jupiter:junit-jupiter-engine:5.3.1' + implementation 'org.junit.jupiter:junit-jupiter-params:5.11.2' + testImplementation 'org.junit.jupiter:junit-jupiter:5.11.2' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.2' implementation 'com.google.code.gson:gson:2.8.5' - compile 'ch.qos.logback:logback-classic:1.2.3' + implementation 'ch.qos.logback:logback-classic:1.2.3' implementation project(':core') implementation project(':messagepack') - compile project(':messagepack') + implementation project(':messagepack') + antJUnit 'org.apache.ant:ant-junit:1.10.15' +} + +sourceSets { + test { + java { + srcDir 'src' + } + } +} + +test { + useJUnitPlatform() + testLogging { + events "passed", "skipped", "failed" + } + + reports { + html.required = false + junitXml.outputPerTestCase = true + junitXml.required = true + } +} + +// Merge test results into a single file for Helix to detect JUnit test file +task testReport { + ext { + resultsDir = file("$buildDir/test-results") + mergedFile = "test-results/junit-results.xml" + } + + doLast { + mkdir 'test-results' + ant.taskdef(name: 'junitreport', + classname: 'org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator', + classpath: configurations.antJUnit.asPath) + + ant.junitreport(tofile: mergedFile) { + fileset(dir: resultsDir, includes: '**/TEST-*.xml') + } + } } -junitPlatform { - reportsDir file('test-results') -} \ No newline at end of file +test.finalizedBy(testReport) \ No newline at end of file diff --git a/src/SignalR/clients/java/signalr/test/signalr.client.java.Tests.javaproj b/src/SignalR/clients/java/signalr/test/signalr.client.java.Tests.javaproj index 3e8dfac79be9..823c53ae8a72 100644 --- a/src/SignalR/clients/java/signalr/test/signalr.client.java.Tests.javaproj +++ b/src/SignalR/clients/java/signalr/test/signalr.client.java.Tests.javaproj @@ -49,8 +49,8 @@ - - + +