diff --git a/src/genjava/gradle/gradle.tar.gz b/src/genjava/gradle/gradle.tar.gz
index 2d50a3e6a6bb3465f250ef7ebdd6225811bb2376..3b9d3de97442e2f5142806724bdaf47f2219b80f 100644
Binary files a/src/genjava/gradle/gradle.tar.gz and b/src/genjava/gradle/gradle.tar.gz differ
diff --git a/src/genjava/templates/genjava_project/build.gradle.in b/src/genjava/templates/genjava_project/build.gradle.in
index 621c3f445f861f6e05046edf32c597dac3b31e45..f2da1228141fe8ae613bb99ca8899433ca569922 100644
--- a/src/genjava/templates/genjava_project/build.gradle.in
+++ b/src/genjava/templates/genjava_project/build.gradle.in
@@ -15,7 +15,7 @@
  */
 
 task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
+    gradleVersion = '3.5.1'
 }
 
 buildscript {
@@ -67,26 +67,28 @@ jar {
     }
 }
 
-task info << {
-    println "\nProject Info"
-    println "============\n"
-    println "Name          : ${rootProject}"
-    println "Dir           : ${projectDir}"
-    println "Group         : ${group}"
-    println "Version       : ${version}"
-    println "Configurations: " + configurations
+task info {
+    doLast {
+        println "\nProject Info"
+        println "============\n"
+        println "Name          : ${rootProject}"
+        println "Dir           : ${projectDir}"
+        println "Group         : ${group}"
+        println "Version       : ${version}"
+        println "Configurations: " + configurations
 
-    println "\nPackage Info"
-    println "============\n"
-    println "Name          : %(project_name)s"
-    println "Dir           : %(pkg_directory)s"
+        println "\nPackage Info"
+        println "============\n"
+        println "Name          : %(project_name)s"
+        println "Dir           : %(pkg_directory)s"
 
-    println "\nGenerate Info"
-    println "============\n"
-    println "Output Dir    : ${generated_sources_directory}"
-    println "Task Args     : " + tasks["generateSources"].args
-    tasks["generateSources"].outputs.getFiles().getAsFileTree().each {
-        println "Files         : ${it}"
+        println "\nGenerate Info"
+        println "============\n"
+        println "Output Dir    : ${generated_sources_directory}"
+        println "Task Args     : " + tasks["generateSources"].args
+        tasks["generateSources"].outputs.getFiles().getAsFileTree().each {
+            println "Files         : ${it}"
+        }
     }
 }
 
@@ -98,8 +100,10 @@ task info << {
  * Until we get this properly fixed (it fails in genjava), then we use the following bugfix to deal with the
  * 'Could not copy MANIFEST.MF...' error that occurs when no sources are to be made for an artifact.
  */
-task bugfixtask << {
-    mkdir sourceSets.main.output.classesDir
+task bugfixtask {
+    doLast {
+        mkdir sourceSets.main.output.classesDir
+    }
 }
 
 jar.dependsOn(bugfixtask)