Fix Gradle 5 error (#355)

diff --git a/gradle/docker.gradle b/gradle/docker.gradle
index b06c3ba..398dd50 100644
--- a/gradle/docker.gradle
+++ b/gradle/docker.gradle
@@ -39,7 +39,7 @@
  */
 
 ext {
-    dockerRegistry = project.hasProperty('dockerRegistry') && dockerRegistry != '' ? dockerRegistry + '/' : ''
+    dockerRegistry = project.hasProperty('dockerRegistry') ? dockerRegistry + '/' : ''
     dockerImageTag = project.hasProperty('dockerImageTag') ? dockerImageTag : 'latest'
     dockerImagePrefix = project.hasProperty('dockerImagePrefix') ? dockerImagePrefix : 'whisk'
     dockerTimeout = project.hasProperty('dockerTimeout') ? dockerTimeout.toInteger() : 840
@@ -54,32 +54,82 @@
 }
 
 if(project.hasProperty('dockerBuildArgs')) {
-    dockerBuildArg += ['--build-arg', project.dockerBuildArgs]
-}
-
-task distDocker << {
-    def start = new Date()
-    def cmd = dockerBinary + dockerBuildArg + ['-t', dockerImageName, project.buildscript.sourceFile.getParentFile().getAbsolutePath()]
-    retry(cmd, dockerRetries, dockerTimeout)
-    println("Building '${dockerImageName}' took ${TimeCategory.minus(new Date(), start)}")
-}
-task tagImage << {
-    def versionString = (dockerBinary + ['-v']).execute().text
-    def matched = (versionString =~ /(\d+)\.(\d+)\.(\d+)/)
-
-    def major = matched[0][1] as int
-    def minor = matched[0][2] as int
-
-    def dockerCmd = ['tag']
-    if(major == 1 && minor < 12) {
-        dockerCmd += ['-f']
+    dockerBuildArgs.each { arg  ->
+        dockerBuildArg += ['--build-arg', arg]
     }
-    retry(dockerBinary + dockerCmd + [dockerImageName, dockerTaggedImageName], dockerRetries, dockerTimeout)
 }
 
-task pushImage << {
-    def cmd = dockerBinary + ['push', dockerTaggedImageName]
-    retry(cmd, dockerRetries, dockerTimeout)
+task distDocker {
+    doLast {
+        def start = new Date()
+        def cmd = dockerBinary + dockerBuildArg + ['-t', dockerImageName, project.buildscript.sourceFile.getParentFile().getAbsolutePath()]
+        retry(cmd, dockerRetries, dockerTimeout)
+        println("Building '${dockerImageName}' took ${TimeCategory.minus(new Date(), start)}")
+    }
+}
+
+task distDockerCoverage() {
+    doLast {
+        def start = new Date()
+        //Copy the scoverage runtime jars
+        copy {from configurations.scoverage - configurations.compile; into "build/tmp/docker-coverage/ext-lib"}
+        //Copy the scoverage prepared jars
+        coverageDirs.each {dir ->
+            copy {from file(dir); into "build/tmp/docker-coverage/classes"}
+        }
+
+        def buildArgs = [
+                "OW_ROOT_DIR=${project.rootProject.projectDir.absolutePath}"
+        ]
+        def dockerImageNameOrig = dockerImageName
+        dockerImageName = "$dockerImageName-cov"
+
+        //Use absolute paths for dockerFile and build directory
+        String dockerFileDir = project.buildscript.sourceFile.getParentFile().getAbsolutePath()
+        String dockerFile = "$dockerFileDir/Dockerfile.cov"
+
+        def cmd = dockerBinary + prepareBuildArgs(buildArgs) + ['-f', dockerFile, '-t', dockerImageName, dockerFileDir]
+        retry(cmd, dockerRetries, dockerTimeout)
+        println("Building '${dockerImageName}' took ${TimeCategory.minus(new Date(), start)}")
+
+        //Replace the original image with coverage one
+        project.ext.dockerTaggedImageName = dockerImagePrefix + '/' + dockerImageNameOrig + ':' + "cov"
+    }
+    finalizedBy('tagImage')
+}
+
+def prepareBuildArgs(List buildArgs) {
+    def result = ['build']
+    if(project.hasProperty('dockerBuildArgs')) {
+        buildArgs.addAll(dockerBuildArgs)
+    }
+    buildArgs.each {arg ->
+        result += ['--build-arg', arg]
+    }
+    result
+}
+
+task tagImage {
+    doLast {
+        def versionString = (dockerBinary + ['-v']).execute().text
+        def matched = (versionString =~ /(\d+)\.(\d+)\.(\d+)/)
+
+        def major = matched[0][1] as int
+        def minor = matched[0][2] as int
+
+        def dockerCmd = ['tag']
+        if(major == 1 && minor < 12) {
+            dockerCmd += ['-f']
+        }
+        retry(dockerBinary + dockerCmd + [dockerImageName, dockerTaggedImageName], dockerRetries, dockerTimeout)
+    }
+}
+
+task pushImage {
+    doLast {
+        def cmd = dockerBinary + ['push', dockerTaggedImageName]
+        retry(cmd, dockerRetries, dockerTimeout)
+    }
 }
 pushImage.dependsOn tagImage
 pushImage.onlyIf { dockerRegistry != '' }