diff --git a/gradle/nshm.gradle b/gradle/nshm.gradle
index 7774f90b869a519aa9e96b2ca0069d7a0de8ecc2..8b8cfbd74a60b182f3239c6882b7b6793251b0f4 100644
--- a/gradle/nshm.gradle
+++ b/gradle/nshm.gradle
@@ -15,16 +15,11 @@ ext {
   nshmDir = "nshms";
 
   // Download and unzip NSHM
-  downloadNshm = {repo, year ->
-    def yaml = new Yaml()
-    def nshmConfig = new Yaml().load(new File("${projectDir}/nshms.yml").newInputStream())
-    def nshm = nshmConfig.nshms.find{nshm -> nshm.repo == repo && nshm.year == year}
-
-    if (nshm == null) {
-      throw new Exception("NSHM ${repo} ${year} not found.")
-    }
-
+  downloadNshm = {nshm ->
+    def repo = nshm.repo
     def tag = nshm.tag
+    def year = nshm.year
+
     def zipName = "${repo}-${tag}.zip";
     def zipFile = new File(nshmDir, zipName)
     def nshmFile = file("${nshmDir}/${repo}-${year}")
@@ -46,6 +41,20 @@ ext {
       delete zipFile
     }
   }
+
+  // Returns a NSHM from nshms.yml array
+  findNshm = {repo, year ->
+    def yaml = new Yaml()
+    def nshmConfig = new Yaml().load(new File("${projectDir}/nshms.yml").newInputStream())
+    def nshm = nshmConfig.nshms.find{nshm -> nshm.repo == repo && nshm.year == year}
+
+    if (nshm == null) {
+      throw new Exception("NSHM ${repo} ${year} not found.")
+    }
+
+    return nshm
+  }
+
 }
 
 task cleanNshm(type: Delete) {
@@ -53,13 +62,27 @@ task cleanNshm(type: Delete) {
 }
 clean.dependsOn cleanNshm
 
+// Download all NSHMs
+task nshms() {
+  dependsOn cleanNshm
+  def yaml = new Yaml()
+  def nshmConfig = new Yaml().load(new File("${projectDir}/nshms.yml").newInputStream())
+
+  doLast {
+    for (nshm in nshmConfig.nshms) {
+      // Download NSHM
+      downloadNshm(nshm)
+    }
+  }
+}
+
 // Test Alaska 2023 NSHM
 task testAlaska2023(type: Test) {
   description = "Test Alaska 2023 NSHM"
   group = "verification"
 
   doFirst {
-    downloadNshm("nshm-alaska", 2023)
+    downloadNshm(findNshm("nshm-alaska", 2023))
   }
 
   testLogging {
@@ -83,7 +106,7 @@ task testConus2018(type: Test) {
   group = "verification"
 
   doFirst {
-    downloadNshm("nshm-conus", 2018)
+    downloadNshm(findNshm("nshm-conus", 2018))
   }
 
   testLogging {
@@ -107,7 +130,7 @@ task testConus2023(type: Test) {
   group = "verification"
 
   doFirst {
-    downloadNshm("nshm-conus", 2023)
+    downloadNshm(findNshm("nshm-conus", 2023))
   }
 
   testLogging {
@@ -131,7 +154,7 @@ task testHawaii2021(type: Test) {
   group = "verification"
 
   doFirst {
-    downloadNshm("nshm-hawaii", 2021)
+    downloadNshm(findNshm("nshm-hawaii", 2021))
   }
 
   testLogging {