diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md
index 263a91e..00be84b 100644
--- a/DEVELOPMENT.md
+++ b/DEVELOPMENT.md
@@ -80,7 +80,7 @@
 The top-level Gradle file is `edgent/build.gradle` and it contains several
 unique tasks:
 
-* `downloadWrapper` (default) : one-time bootstrap processing for use when building from a source release bundle 
+* `wrapper` (default) : one-time bootstrap processing for use when building from a source release bundle 
 * `assemble` : Build all code and Javadoc into `build\distributions`. The build will fail on any code error or Javadoc warning or error.
 * `all` : Synonym for `assemble`
 * `build` : Essentially like "assemble test reports"
diff --git a/build.gradle b/build.gradle
index 4090017..dfa253b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -17,13 +17,8 @@
 under the License.
 */
  
-ext {
-  gradleVersion = "3.1"
-  gradleDistributionSha256Sum = "c7de3442432253525902f7e8d7eac8b5fd6ce1623f96d76916af6d0e383010fc"
-}
-apply from: 'wrapper.gradle'
-
-apply from: 'other.gradle'
+apply from: 'gradle/wrapper.gradle'
+apply from: 'gradle/other.gradle'
 
 import org.gradle.plugins.signing.Sign
 import java.io.Console
@@ -686,8 +681,8 @@
   ant.move(file: "TESTS-TestSuites.xml", tofile: "${target_report_dir}/TESTS-TestSuites.xml")
 }
 
-apply from: 'jacoco.gradle'
-apply from: 'javadoc.gradle'
+apply from: 'gradle/jacoco.gradle'
+apply from: 'gradle/javadoc.gradle'
 
 task addVersionDotTxt {
   description = 'Add version.txt in target_dir'
@@ -873,7 +868,3 @@
   description = 'Add all of the dependant external jars to the target-dir (make available to Eclipse, etc)'
   dependsOn setupCommonExtJars, filteredSubprojects.setupProjectExtJars
 }
-
-task wrapper(type: Wrapper) {
-  jarFile = rootProject.file('.gradle-wrapper/gradle-wrapper.jar')
-}
diff --git a/gradle.properties b/gradle.properties
index 004d9d8..291599b 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -14,7 +14,14 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+
 build_group: org.apache.edgent
 build_name: edgent
 build_version: 1.0.0
 build_vendor: Apache Software Foundation
+
+# Minimum required gradle version and version for the wrapper to use.
+# Comment out gradleDistributionSha256Sum to disable validation of
+# a wrapper downloaded gradle distribution.
+gradleVersion = 3.1
+gradleDistributionSha256Sum = c7de3442432253525902f7e8d7eac8b5fd6ce1623f96d76916af6d0e383010fc
diff --git a/jacoco.gradle b/gradle/jacoco.gradle
similarity index 100%
rename from jacoco.gradle
rename to gradle/jacoco.gradle
diff --git a/javadoc.gradle b/gradle/javadoc.gradle
similarity index 100%
rename from javadoc.gradle
rename to gradle/javadoc.gradle
diff --git a/other.gradle b/gradle/other.gradle
similarity index 100%
rename from other.gradle
rename to gradle/other.gradle
diff --git a/wrapper.gradle b/gradle/wrapper.gradle
similarity index 60%
rename from wrapper.gradle
rename to gradle/wrapper.gradle
index 32fba02..557a8f8 100644
--- a/wrapper.gradle
+++ b/gradle/wrapper.gradle
@@ -17,10 +17,10 @@
  * under the License.
  */
 
-defaultTasks 'downloadWrapper'
+defaultTasks 'wrapper'
 
-task downloadWrapper(type: Wrapper) {
-    description = "Download the gradle wrapper and requisite files. Overwrites existing wrapper files."
+task wrapper(type: Wrapper) {
+    description = "Initialize the gradle wrapper. Overwrites existing wrapper files."
     jarFile = "${project.projectDir}/.gradle-wrapper/gradle-wrapper.jar"
     
     gradleVersion = project.gradleVersion
@@ -28,11 +28,24 @@
     // distributionSha256Sum = project.gradleDistributionSha256Sum
     
     doLast {
-      File wrapperProps = file(propertiesFile)
-      wrapperProps.append("distributionSha256Sum=${project.gradleDistributionSha256Sum}\n");
+      if (project.hasProperty("gradleDistributionSha256Sum")) {
+        File wrapperProps = file(propertiesFile)
+        wrapperProps.append("distributionSha256Sum=${project.gradleDistributionSha256Sum}\n");
+      }
     }
     doLast {
       println "The gradle wrapper is now initialized." +
             "\nUse ./gradlew for subsequent build operations."
     }
 }
+
+gradle.taskGraph.whenReady {taskGraph ->
+  if (!taskGraph.hasTask(wrapper)) {
+    if (GradleVersion.current() < GradleVersion.version(gradleVersion)) {
+      throw new GradleException('Running with unsupported Gradle Version (' + GradleVersion.current() + ').' +
+              '\nUse Gradle Wrapper or with Gradle version >= ' + gradleVersion +
+              '\nRun \'gradle\' (default task) to initialize the wrapper.')
+    }
+  }
+}
+
