bump gradle to 8.6
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 249e583..afba109 100644
--- a/gradle/wrapper/gradle-wrapper.jar
+++ b/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 068cdb2..509c4a2 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,6 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
+networkTimeout=10000
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index a69d9cb..65dcd68 100755
--- a/gradlew
+++ b/gradlew
@@ -55,7 +55,7 @@
 #       Darwin, MinGW, and NonStop.
 #
 #   (3) This script is generated from the Groovy template
-#       https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+#       https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
 #       within the Gradle project.
 #
 #       You can find Gradle at https://github.com/gradle/gradle/.
@@ -80,10 +80,10 @@
     esac
 done
 
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
-
-APP_NAME="Gradle"
+# This is normally unused
+# shellcheck disable=SC2034
 APP_BASE_NAME=${0##*/}
+APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
 
 # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
@@ -143,12 +143,16 @@
 if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
     case $MAX_FD in #(
       max*)
+        # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+        # shellcheck disable=SC3045 
         MAX_FD=$( ulimit -H -n ) ||
             warn "Could not query maximum file descriptor limit"
     esac
     case $MAX_FD in  #(
       '' | soft) :;; #(
       *)
+        # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+        # shellcheck disable=SC3045 
         ulimit -n "$MAX_FD" ||
             warn "Could not set maximum file descriptor limit to $MAX_FD"
     esac
diff --git a/gradlew.bat b/gradlew.bat
index f127cfd..93e3f59 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -26,6 +26,7 @@
 
 set DIRNAME=%~dp0
 if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
 set APP_BASE_NAME=%~n0
 set APP_HOME=%DIRNAME%
 
diff --git a/site-dev/build.gradle b/site-dev/build.gradle
index eb35f92..349d16d 100644
--- a/site-dev/build.gradle
+++ b/site-dev/build.gradle
@@ -86,7 +86,7 @@
     outputs.files fileTree(outputDir)
 
     classpath = project(':generator').sourceSets.main.runtimeClasspath
-    main = 'generator.SiteGenerator'
+    mainClass = 'generator.SiteGenerator'
     args = [sources, outputDir, 'sitemap-dev.groovy', project.watchmode]
     systemProperties.docs_baseurl = System.getProperty('docs_baseurl')
 }
@@ -130,10 +130,10 @@
 
 task webzip(type:Zip, dependsOn: checkDeadLinks) {
     description = "Creates a zip with the generated website and the deadlink report"
-    destinationDir = file("$buildDir/distributions")
+    destinationDirectory = file("$buildDir/distributions")
 
-    baseName = 'groovy'
-    appendix = 'website'
+    archiveBaseName = 'groovy'
+    archiveAppendix = 'website'
     from(generateSite.outputDir) {
         into 'site'
     }
diff --git a/site-user/build.gradle b/site-user/build.gradle
index 9d3582b..acc475d 100644
--- a/site-user/build.gradle
+++ b/site-user/build.gradle
@@ -69,7 +69,7 @@
     outputs.files fileTree(outputDir)
 
     classpath = project(':generator').sourceSets.main.runtimeClasspath
-    main = 'generator.SiteGenerator'
+    mainClass = 'generator.SiteGenerator'
     args = [sources, outputDir, 'sitemap-user.groovy', project.watchmode]
     systemProperties.docs_baseurl = System.getProperty('docs_baseurl')
 }
@@ -113,10 +113,10 @@
 
 task webzip(type:Zip, dependsOn: checkDeadLinks) {
     description = "Creates a zip with the generated website and the deadlink report"
-    destinationDir = file("$buildDir/distributions")
+    destinationDirectory = file("$buildDir/distributions")
 
-    baseName = 'groovy'
-    appendix = 'website'
+    archiveBaseName = 'groovy'
+    archiveAppendix = 'website'
     from(generateSite.outputDir) {
         into 'site'
     }