diff --git a/build.gradle b/build.gradle
index c874e6cec9265cb715bd6b82f2996dbb1de951ce..2b5598bf7f67f6af4f38f0d0a065417beff75d15 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,8 +1,10 @@
 
 plugins {
-  id 'war'
-  id 'eclipse-wtp'
-  id 'jacoco'
+  id "application"
+  id "com.github.johnrengelman.shadow" version "5.0.0"
+  id "net.ltgt.apt-eclipse" version "0.21"
+  id "eclipse-wtp"
+  id "jacoco"
 }
 
 sourceCompatibility = 1.8
@@ -13,11 +15,29 @@ repositories {
 }
 
 dependencies {
+  // micronaut
+  annotationProcessor platform("io.micronaut:micronaut-bom:1.2.6")
+  annotationProcessor "io.micronaut:micronaut-inject-java"
+  annotationProcessor "io.micronaut:micronaut-validation"
+  implementation platform("io.micronaut:micronaut-bom:1.2.6")
+  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"
+  runtimeOnly "ch.qos.logback:logback-classic:1.2.3"
+  implementation "com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.0"
+
   implementation 'org.apache.tomcat:tomcat-catalina:8.0.45'
   implementation project(':nshmp-lib')
 
-  testImplementation 'junit:junit:4.12'
-  testImplementation 'org.mockito:mockito-core:3.+'
+  // junit
+  testImplementation 'org.junit.jupiter:junit-jupiter:5.5.2'
+  testImplementation "org.junit.jupiter:junit-jupiter-api:5.4.2"
+  testImplementation "org.mockito:mockito-junit-jupiter:2.22.0"
+  // testAnnotationProcessor "io.micronaut:micronaut-inject-java:1.2.6"
+  // testImplementation "io.micronaut.test:micronaut-test-junit5:1.1.2"
+  // testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.1.0"
 }
 
 sourceSets {
@@ -45,6 +65,8 @@ sourceSets {
 }
 
 test {
+  useJUnitPlatform()
+
   reports {
     junitXml.enabled = true
     html.enabled = true
@@ -60,6 +82,14 @@ jacocoTestReport {
 
 check.dependsOn jacocoTestReport
 
-war {
-  webAppDirName = 'webapp'
+mainClassName = "gov.usgs.earthquake.nshmp.www.Application"
+
+shadowJar {
+  mergeServiceFiles()
+}
+
+run.jvmArgs('-noverify', '-XX:TieredStopAtLevel=1', '-Dcom.sun.management.jmxremote')
+tasks.withType(JavaCompile){
+  options.encoding = "UTF-8"
+  options.compilerArgs.add('-parameters')
 }