diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index c45b94a..7cf2721 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -64,16 +64,16 @@
         ./gradlew --no-parallel --no-daemon build -Pcalcite.avatica.version=1.0.0-dev-master-SNAPSHOT -PenableMavenLocal
 
   mac:
-    name: 'macOS (JDK 13)'
+    name: 'macOS (JDK 14)'
     runs-on: macos-latest
     steps:
     - uses: actions/checkout@v2
       with:
         fetch-depth: 50
-    - name: 'Set up JDK 13'
+    - name: 'Set up JDK 14'
       uses: actions/setup-java@v1
       with:
-        java-version: 13
+        java-version: 14
     - name: 'Test'
       run: |
         ./gradlew --no-parallel --no-daemon build javadoc
diff --git a/bom/build.gradle.kts b/bom/build.gradle.kts
index 0659f43..71a8183 100644
--- a/bom/build.gradle.kts
+++ b/bom/build.gradle.kts
@@ -39,8 +39,7 @@
     "runtime"(notation + ":" + versionProp.v)
 
 dependencies {
-    // Parenthesis are needed here: https://github.com/gradle/gradle/issues/9248
-    (constraints) {
+    constraints {
         // api means "the dependency is for both compilation and runtime"
         // runtime means "the dependency is only for runtime, not for compilation"
         // In other words, marking dependency as "runtime" would avoid accidental
diff --git a/build.gradle.kts b/build.gradle.kts
index bdc56ca..d3173e1 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -22,6 +22,9 @@
 import com.github.vlsi.gradle.properties.dsl.lastEditYear
 import com.github.vlsi.gradle.properties.dsl.props
 import com.github.vlsi.gradle.properties.dsl.toBool
+import com.github.vlsi.gradle.publishing.dsl.extraMavenPublications
+import com.github.vlsi.gradle.publishing.dsl.simplifyXml
+import com.github.vlsi.gradle.publishing.dsl.versionFromResolution
 import com.github.vlsi.gradle.release.RepositoryType
 import com.github.vlsi.gradle.test.dsl.printTestResults
 import de.thetaphi.forbiddenapis.gradle.CheckForbiddenApis
@@ -212,8 +215,9 @@
             // https://github.com/julianhyde/toolbox/issues/3
             //  toolVersion = "6.18"
             isShowViolations = true
-            configDir = File(rootDir, "src/main/config/checkstyle")
-            configFile = File(configDir, "checker.xml")
+            val dir = File(rootDir, "src/main/config/checkstyle")
+            configDirectory.set(dir)
+            configFile = File(dir, "checker.xml")
             configProperties = mapOf(
                 "checkstyle.header.file" to "$rootDir/src/main/config/checkstyle/header.txt",
                 "checkstyle.suppressions.file" to "$rootDir/src/main/config/checkstyle/suppressions.xml"
@@ -321,8 +325,7 @@
                 this.sourceSets = listOf(sourceSets["main"])
             }
             dependencies {
-                // Parenthesis are needed here: https://github.com/gradle/gradle/issues/9248
-                (constraints) {
+                constraints {
                     "spotbugs"("org.ow2.asm:asm:${"asm".v}")
                     "spotbugs"("org.ow2.asm:asm-all:${"asm".v}")
                     "spotbugs"("org.ow2.asm:asm-analysis:${"asm".v}")
@@ -478,6 +481,7 @@
                 // Do not publish "root" project. Java plugin is applied here for DSL purposes only
                 return@configure
             }
+            extraMavenPublications()
             publications {
                 create<MavenPublication>(project.name) {
                     artifactId = archivesBaseName
@@ -492,36 +496,9 @@
                         artifact(javadocJar.get())
                     }
 
-                    // Use the resolved versions in pom.xml
-                    // Gradle might have different resolution rules, so we set the versions
-                    // that were used in Gradle build/test.
-                    versionMapping {
-                        usage(Usage.JAVA_RUNTIME) {
-                            fromResolutionResult()
-                        }
-                        usage(Usage.JAVA_API) {
-                            fromResolutionOf("runtimeClasspath")
-                        }
-                    }
+                    versionFromResolution()
                     pom {
-                        withXml {
-                            val sb = asString()
-                            var s = sb.toString()
-                            // <scope>compile</scope> is Maven default, so delete it
-                            s = s.replace("<scope>compile</scope>", "")
-                            // Cut <dependencyManagement> because all dependencies have the resolved versions
-                            s = s.replace(
-                                Regex(
-                                    "<dependencyManagement>.*?</dependencyManagement>",
-                                    RegexOption.DOT_MATCHES_ALL
-                                ),
-                                ""
-                            )
-                            sb.setLength(0)
-                            sb.append(s)
-                            // Re-format the XML
-                            asNode()
-                        }
+                        simplifyXml()
                         project.property("artifact.name")?.let { name.set(it as String) }
                         description.set(project.description)
                         inceptionYear.set("2012")
diff --git a/gradle.properties b/gradle.properties
index 8f70cbb..fb47ead 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -37,7 +37,7 @@
 com.github.autostyle.version=3.0
 com.github.johnrengelman.shadow.version=5.1.0
 com.github.spotbugs.version=2.0.0
-com.github.vlsi.vlsi-release-plugins.version=1.60
+com.github.vlsi.vlsi-release-plugins.version=1.70
 com.google.protobuf.version=0.8.12
 de.thetaphi.forbiddenapis.version=2.7
 org.jetbrains.gradle.plugin.idea-ext.version=0.5
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 5c2d1cf..490fda8 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 1aeccff..0db054b 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -16,7 +16,7 @@
 #
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionSha256Sum=10065868c78f1207afb3a92176f99a37d753a513dff453abb6b5cceda4058cda
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
+distributionSha256Sum=0f316a67b971b7b571dac7215dcf2591a30994b3450e0629925ffcfe2c68cc5c
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index 83f2acf..2fe81a7 100755
--- a/gradlew
+++ b/gradlew
@@ -154,19 +154,19 @@
         else
             eval `echo args$i`="\"$arg\""
         fi
-        i=$((i+1))
+        i=`expr $i + 1`
     done
     case $i in
-        (0) set -- ;;
-        (1) set -- "$args0" ;;
-        (2) set -- "$args0" "$args1" ;;
-        (3) set -- "$args0" "$args1" "$args2" ;;
-        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+        0) set -- ;;
+        1) set -- "$args0" ;;
+        2) set -- "$args0" "$args1" ;;
+        3) set -- "$args0" "$args1" "$args2" ;;
+        4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
     esac
 fi
 
@@ -175,14 +175,9 @@
     for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
     echo " "
 }
-APP_ARGS=$(save "$@")
+APP_ARGS=`save "$@"`
 
 # Collect all arguments for the java command, following the shell quoting and substitution rules
 eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
 
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
-  cd "$(dirname "$0")"
-fi
-
 exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
index 9618d8d..62bd9b9 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -29,6 +29,9 @@
 set APP_BASE_NAME=%~n0
 set APP_HOME=%DIRNAME%
 
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
 @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
 
diff --git a/shaded/core/build.gradle.kts b/shaded/core/build.gradle.kts
index b06ff65..6a8ce5c 100644
--- a/shaded/core/build.gradle.kts
+++ b/shaded/core/build.gradle.kts
@@ -61,7 +61,7 @@
     val licenseFiles = licensesCopySpec(license)
 
     shadowJar {
-        archiveClassifier.set("")
+        archiveClassifier.set("shadow")
         configurations = listOf(shaded)
         exclude("META-INF/maven/**")
         exclude("META-INF/LICENSE*")
@@ -87,3 +87,9 @@
         dependsOn(shadowJar)
     }
 }
+
+artifacts {
+    extraMavenPublications(tasks.shadowJar) {
+        classifier = ""
+    }
+}
diff --git a/standalone-server/build.gradle.kts b/standalone-server/build.gradle.kts
index 2868939..b3b0bde 100644
--- a/standalone-server/build.gradle.kts
+++ b/standalone-server/build.gradle.kts
@@ -86,7 +86,7 @@
         manifest {
             attributes["Main-Class"] = "org.apache.calcite.avatica.server.StandaloneServer"
         }
-        archiveClassifier.set("")
+        archiveClassifier.set("shadow")
         configurations = listOf(shaded)
         exclude("META-INF/maven/**")
         exclude("META-INF/LICENSE*")
@@ -113,3 +113,9 @@
         }
     }
 }
+
+artifacts {
+    extraMavenPublications(tasks.shadowJar) {
+        classifier = ""
+    }
+}
diff --git a/tck/build.gradle.kts b/tck/build.gradle.kts
index 5fe1220..15969ae 100644
--- a/tck/build.gradle.kts
+++ b/tck/build.gradle.kts
@@ -80,7 +80,7 @@
     val licenseFiles = licensesCopySpec(license)
 
     shadowJar {
-        archiveClassifier.set("")
+        archiveClassifier.set("shadow")
         configurations = listOf(shaded)
         exclude("META-INF/maven/**")
         exclude("META-INF/LICENSE*")
@@ -113,3 +113,11 @@
         dependsOn(shadowJar)
     }
 }
+
+val extraMavenPublications by configurations.getting
+
+(artifacts) {
+    extraMavenPublications(tasks.shadowJar) {
+        classifier = ""
+    }
+}
