diff --git a/build.gradle b/build.gradle
index da64c54f23b0989b91661ee1691804f905dfca49..ad7f391ada7659143b6c158e3415285b47aa5645 100644
--- a/build.gradle
+++ b/build.gradle
@@ -14,6 +14,7 @@ compileJava.options.encoding = "UTF-8"
 compileTestJava.options.encoding = "UTF-8"
 sourceCompatibility = JavaVersion.VERSION_11
 
+apply from: "${projectDir}/gradle/app-version.gradle"
 apply from: "${projectDir}/gradle/git-hooks.gradle"
 apply from: "${projectDir}/gradle/node.gradle"
 apply from: "${projectDir}/gradle/repositories.gradle"
@@ -39,26 +40,6 @@ java {
   withSourcesJar()
 }
 
-jar {
-  doFirst {
-    def versionFile = new File("${projectDir}/src/main/resources/nshmp-lib-version.json")
-    def details = versionDetails()
-    def versionInfo = [
-      branchName: details.branchName,
-      commitDistance: details.commitDistance,
-      gitHash:  details.gitHash,
-      gitHashFull:  details.gitHashFull,
-      isCleanTag:  details.isCleanTag,
-      lastTag:  details.lastTag,
-      projectName: project.name,
-      url: 'git config --get remote.origin.url'.execute().text.replace('\n', ''),
-      version: details.version,
-    ]
-    def json = groovy.json.JsonOutput.toJson(versionInfo)
-    versionFile.write(groovy.json.JsonOutput.prettyPrint(json))
-  }
-}
-
 javadoc {
   def docTitle = "<a href=\"https://code.usgs.gov/ghsc/nshmp/nshmp-lib.git\">${project.name}</a>"
   options.setUse(true)
diff --git a/gradle/app-version.gradle b/gradle/app-version.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..81cecf7d2f5ef8ad162699ff1f069e0d6456794d
--- /dev/null
+++ b/gradle/app-version.gradle
@@ -0,0 +1,24 @@
+apply plugin: "com.palantir.git-version"
+
+
+tasks.withType(JavaCompile) {
+  doFirst {
+    def versionFile = new File("${projectDir}/src/main/resources/version/nshmp-lib-version.json")
+    new File(versionFile.getParent()).mkdirs()
+    def details = versionDetails()
+    def versionInfo = [
+      branchName: details.branchName,
+      commitDistance: details.commitDistance,
+      gitHash:  details.gitHash,
+      gitHashFull:  details.gitHashFull,
+      isCleanTag:  details.isCleanTag,
+      lastTag:  details.lastTag,
+      projectName: project.name,
+      url: 'git config --get remote.origin.url'.execute().text.replace('\n', ''),
+      version: details.version,
+    ]
+    def json = groovy.json.JsonOutput.toJson(versionInfo)
+    versionFile.write(groovy.json.JsonOutput.prettyPrint(json))
+  }
+}
+