refactoring to use built-in JDK11+ HttpClient
diff --git a/buildSrc/src/main/groovy/HttpUtil.groovy b/buildSrc/src/main/groovy/HttpUtil.groovy
new file mode 100644
index 0000000..6a83fab
--- /dev/null
+++ b/buildSrc/src/main/groovy/HttpUtil.groovy
@@ -0,0 +1,38 @@
+import java.net.http.HttpClient
+import java.net.http.HttpRequest
+import java.net.http.HttpResponse
+import java.time.Duration
+
+class HttpUtil {
+    private HttpUtil() {}
+
+    static HttpClient newClient() {
+        HttpClient.newBuilder()
+                .version(HttpClient.Version.HTTP_1_1)
+                .connectTimeout(Duration.ofSeconds(10))
+                .build()
+
+    }
+
+    static HttpRequest getRequest(url, user, password) {
+        HttpRequest.newBuilder()
+                .uri(new URI(url))
+                .header('Authorization', 'Basic ' + "$user:$password".getBytes('iso-8859-1').encodeBase64())
+                .GET()
+                .build()
+    }
+
+    static HttpRequest putRequest(url, json, user, password) {
+        def body = HttpRequest.BodyPublishers.ofString(json)
+        HttpRequest.newBuilder()
+                .uri(new URI(url))
+                .header('Authorization', 'Basic ' + "$user:$password".getBytes('iso-8859-1').encodeBase64())
+                .header('Content-Type', 'application/json')
+                .PUT(body)
+                .build()
+    }
+
+    static WrappedResponse send(HttpClient client, HttpRequest request) {
+        new WrappedResponse(client.send(request, HttpResponse.BodyHandlers.ofString()))
+    }
+}
\ No newline at end of file
diff --git a/buildSrc/src/main/groovy/WrappedResponse.groovy b/buildSrc/src/main/groovy/WrappedResponse.groovy
new file mode 100644
index 0000000..b76be70
--- /dev/null
+++ b/buildSrc/src/main/groovy/WrappedResponse.groovy
@@ -0,0 +1,14 @@
+import java.net.http.HttpResponse
+import groovy.json.JsonSlurper
+
+class WrappedResponse {
+    @Delegate HttpResponse response
+
+    WrappedResponse(HttpResponse response) {
+        this.response = response
+    }
+
+    def getJson() {
+        new JsonSlurper().parseText(response.body())
+    }
+}
diff --git a/gradle/adhoc.gradle b/gradle/adhoc.gradle
index 8a80d13..8327b6b 100644
--- a/gradle/adhoc.gradle
+++ b/gradle/adhoc.gradle
@@ -1,11 +1,9 @@
-import groovyx.net.http.HttpBuilder
 import org.ajoberstar.grgit.Credentials
 import org.ajoberstar.grgit.util.JGitUtil
 import org.apache.tools.ant.taskdefs.condition.Os
 
 buildscript {
     repositories {
-        jcenter()
         maven {
             url "https://plugins.gradle.org/m2/"
         }
@@ -14,7 +12,6 @@
     dependencies {
         classpath "org.ajoberstar:grgit:${getProperty('version.grgit')}"
         classpath "at.bxm.gradleplugins:gradle-svntools-plugin:${getProperty('version.svntools')}"
-        classpath "io.github.http-builder-ng:http-builder-ng-okhttp:${getProperty('version.httpbuilderng')}"
         classpath "org.hidetake:gradle-ssh-plugin:${getProperty('version.sshplugin')}"
         classpath "gradle.plugin.io.sdkman:gradle-sdkvendor-plugin:${getProperty('version.sdkmanplugin')}"
     }
@@ -130,14 +127,11 @@
 task unreleaseOnJira(dependsOn: jiraCheckPhase2) {
     description = "Unrelease on Jira if the VOTE is cancelled"
     doLast {
-        HttpBuilder.configure {
-            request.uri = 'https://issues.apache.org'
-            request.auth.basic apacheUser, apachePassword
-        }.put {
-            request.uri.path = "/jira/rest/api/2/version/$versionId"
-            request.body = /{ "released": false, "releaseDate": null }/
-            request.contentType = 'application/json'
-        }
+        def client = HttpUtil.newClient()
+        def request = HttpUtil.putRequest("https://issues.apache.org/jira/rest/api/2/version/$versionId",
+                /{ "released": false, "releaseDate": null }/, apacheUser, apachePassword)
+        def response = HttpUtil.send(client, request)
+        assert response.statusCode() == 200
     }
 }
 
diff --git a/gradle/phase1.gradle b/gradle/phase1.gradle
index dc40fe1..8629b6a 100644
--- a/gradle/phase1.gradle
+++ b/gradle/phase1.gradle
@@ -3,7 +3,6 @@
 import at.bxm.gradleplugins.svntools.tasks.SvnCheckout
 import at.bxm.gradleplugins.svntools.tasks.SvnCommit
 import at.bxm.gradleplugins.svntools.tasks.SvnVersion
-import groovyx.net.http.HttpBuilder
 import org.ajoberstar.grgit.Credentials
 import org.ajoberstar.grgit.Person
 import org.ajoberstar.grgit.util.JGitUtil
@@ -11,7 +10,6 @@
 
 buildscript {
     repositories {
-        jcenter()
         maven {
             url "https://plugins.gradle.org/m2/"
         }
@@ -20,7 +18,6 @@
     dependencies {
         classpath "org.ajoberstar:grgit:${getProperty('version.grgit')}"
         classpath "at.bxm.gradleplugins:gradle-svntools-plugin:${getProperty('version.svntools')}"
-        classpath "io.github.http-builder-ng:http-builder-ng-okhttp:${getProperty('version.httpbuilderng')}"
         classpath "org.hidetake:gradle-ssh-plugin:${getProperty('version.sshplugin')}"
         classpath "gradle.plugin.io.sdkman:gradle-sdkvendor-plugin:${getProperty('version.sdkmanplugin')}"
     }
@@ -83,15 +80,12 @@
 
 task jiraPrecheck(dependsOn: assumesRelVersion) {
     doLast {
-        def prefix = '/jira/rest/api/2'
-        def jira = HttpBuilder.configure {
-            request.uri = 'https://issues.apache.org'
-            request.auth.basic apacheUser, apachePassword
-        }
-        def resp = jira.get {
-            request.uri.path = "$prefix/project/GROOVY/versions"
-        }
-        def versionFields = resp.find { it.name == relVersion }
+        def prefix = 'https://issues.apache.org/jira/rest/api/2'
+        def client = HttpUtil.newClient()
+        def request = HttpUtil.getRequest("$prefix/project/GROOVY/versions", apacheUser, apachePassword)
+        def response = HttpUtil.send(client, request)
+        assert response.statusCode() == 200
+        def versionFields = response.json.find { it.name == relVersion }
         assert versionFields, "Version $relVersion not found in Jira!"
         if (!project.hasProperty('skipJiraReleaseCheck')) {
             assert !versionFields.released, "Version $relVersion already released!"
@@ -99,16 +93,17 @@
         project.ext.versionId = versionFields.id
         project.ext.projectId = versionFields.projectId
 
-        resp = jira.get {
-            request.uri.path = "$prefix/version/$versionId/unresolvedIssueCount"
+        request = HttpUtil.getRequest("$prefix/version/$versionId/unresolvedIssueCount", apacheUser, apachePassword)
+        response = HttpUtil.send(client, request)
+        assert response.statusCode() == 200
+        if (response.json.issuesUnresolvedCount) {
+            logger.warn "Warning found $response.json.issuesUnresolvedCount unresolved issues for version $relVersion"
         }
-        if (resp.issuesUnresolvedCount) {
-            logger.warn "Warning found $resp.issuesUnresolvedCount unresolved issues for version $relVersion"
-        }
-        resp = jira.get {
-            request.uri.path = "$prefix/version/$versionId/relatedIssueCounts"
-        }
-        project.ext.fixCount = resp.issuesFixedCount
+
+        request = HttpUtil.getRequest("$prefix/version/$versionId/relatedIssueCounts", apacheUser, apachePassword)
+        response = HttpUtil.send(client, request)
+        assert response.statusCode() == 200
+        project.ext.fixCount = response.json.issuesFixedCount
     }
 }
 
@@ -280,14 +275,11 @@
     group = "Pre-vote phase"
     description = "Releases the version on JIRA"
     doLast {
-        HttpBuilder.configure {
-            request.uri = 'https://issues.apache.org'
-            request.auth.basic apacheUser, apachePassword
-        }.put {
-            request.uri.path = "/jira/rest/api/2/version/$versionId"
-            request.body = /{ "released": true, "releaseDate": "$now" }/
-            request.contentType = 'application/json'
-        }
+        def client = HttpUtil.newClient()
+        def request = HttpUtil.putRequest("https://issues.apache.org/jira/rest/api/2/version/$versionId",
+                /{ "released": true, "releaseDate": "$now" }/, apacheUser, apachePassword)
+        def response = HttpUtil.send(client, request)
+        assert response.statusCode() == 200
     }
 }