diff --git a/build.gradle b/build.gradle
index 4afb7b48952a215e2896070a5f3b989961abbf0e..1baa4b322ff240be3053bad94c5b5d93958d9d61 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,6 +7,7 @@ plugins {
   id "eclipse-wtp"
   id "jacoco"
   id "java"
+  id "maven-publish"
   id "net.ltgt.apt-eclipse" version "${aptEclipseVersion}"
 }
 
@@ -15,66 +16,21 @@ compileJava.options.encoding = "UTF-8"
 
 mainClassName = "gov.usgs.earthquake.nshmp.netcdf.www.Application"
 
-repositories {
-  jcenter()
-
-  maven {
-    url "https://artifacts.unidata.ucar.edu/repository/unidata-all/"
-  }
-}
-
-git {
-  implementation("https://code.usgs.gov/ghsc/nshmp/nshmp-lib.git", {
-    name "nshmp-netcdf-dep--nshmp-lib"
-    tag "v0.1.1"
-  })
+configurations {
+  nshmp
 }
 
 ext {
-  nshmpLib = "libs/nshmp-netcdf-dep--nshmp-lib"
+  libsDir = "libs"
+  nshmpLib = "${libsDir}/nshmp-lib-artifacts"
   nshmpLibGradleDir = "${nshmpLib}/gradle"
   spotbugsDir = "${nshmpLib}/gradle"
   spotlessDir = "${nshmpLib}/src/main/resources"
   swaggerDir = "swagger-files"
 }
 
-apply from: "${nshmpLibGradleDir}/git-hooks.gradle"
-apply from: "${nshmpLibGradleDir}/spotbugs.gradle"
-apply from: "${nshmpLibGradleDir}/spotless.gradle"
-
-dependencies {
-  // NetCDF
-  implementation "edu.ucar:cdm:${cdmVersion}"
-  implementation "edu.ucar:netcdf4:${netcdfVersion}"
-  implementation "org.slf4j:slf4j-jdk14:${slfVersion}"
-
-  // Micronaut
-  annotationProcessor platform("io.micronaut:micronaut-bom:${mnVersion}")
-  annotationProcessor "io.micronaut:micronaut-inject-java"
-  annotationProcessor "io.micronaut:micronaut-validation"
-  implementation platform("io.micronaut:micronaut-bom:${mnVersion}")
-  implementation "io.micronaut:micronaut-http-client"
-  implementation "io.micronaut:micronaut-inject"
-  implementation "io.micronaut:micronaut-validation"
-  implementation "io.micronaut:micronaut-runtime"
-  implementation "io.micronaut:micronaut-http-server-netty"
-  implementation "com.fasterxml.jackson.module:jackson-module-parameter-names:${jacksonVersion}"
-  runtimeOnly "ch.qos.logback:logback-classic:${logbackVersion}"
-
-  // Swagger
-  annotationProcessor("io.micronaut.configuration:micronaut-openapi:${mnOpenAPIVersion}")
-  implementation("io.swagger.core.v3:swagger-annotations:${swaggerVersion}")
-  implementation("io.swagger.core.v3:swagger-models:${swaggerVersion}")
-
-  // junit
-  testAnnotationProcessor "io.micronaut:micronaut-inject-java:${mnVersion}"
-  testImplementation platform("io.micronaut:micronaut-bom:${mnVersion}")
-  testImplementation "org.junit.jupiter:junit-jupiter:${junitVersion}"
-  testImplementation "org.junit.jupiter:junit-jupiter-api"
-  testImplementation "io.micronaut.test:micronaut-test-junit5"
-  testImplementation "io.micronaut.test:micronaut-test-spock"
-  testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine"
-}
+apply from: "${projectDir}/gradle/repositories.gradle"
+apply from: "${projectDir}/gradle/dependencies.gradle"
 
 test {
   useJUnitPlatform()
@@ -105,7 +61,7 @@ tasks.withType(JavaExec) {
   jvmArgs('-noverify', '-XX:TieredStopAtLevel=1', '-Dcom.sun.management.jmxremote')
 }
 
-/* Add HTML reports to SpotBugs */
+/* SpotBugs */
 tasks.withType(com.github.spotbugs.snom.SpotBugsTask) {
   reports {
     html {
@@ -115,6 +71,7 @@ tasks.withType(com.github.spotbugs.snom.SpotBugsTask) {
   }
 }
 
+/* Run UpdateSwagger */
 task swagger(type: JavaExec) {
   doFirst {
     mkdir swaggerDir
@@ -122,10 +79,26 @@ task swagger(type: JavaExec) {
   classpath sourceSets.main.runtimeClasspath
   main = "gov.usgs.earthquake.nshmp.netcdf.swagger.UpdateSwagger"
 }
+assemble.dependsOn swagger
 
 task swaggerClean(type: Delete) {
   delete swaggerDir
 }
-
 clean.dependsOn swaggerClean
-assemble.dependsOn swagger
+
+task libsClean(type: Delete) {
+  delete libsDir
+}
+clean.dependsOn += libsClean
+
+gradle.afterProject {
+  copy {
+    from {
+      configurations.nshmp.collect { zipTree(it) }
+    }
+    into nshmpLib
+  }
+  apply from: "${nshmpLibGradleDir}/spotbugs.gradle"
+  apply from: "${nshmpLibGradleDir}/git-hooks.gradle"
+  apply from: "${nshmpLibGradleDir}/spotless.gradle"
+}