Update Gradle: 6.1.1 -> 6.3
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 = ""
+    }
+}