diff --git a/build.gradle b/build.gradle
index 9d5723a..a757d72 100644
--- a/build.gradle
+++ b/build.gradle
@@ -39,15 +39,15 @@
 
     appVersion = null
 
+    // Upstream registry to simplify filling out the comps table below
+    upstreamReg = project.hasProperty('upstreamReg') ? project.getProperty('upstreamReg') : 'docker.io'
+
     // Target registry to be used to publish docker images needed for deployment
     targetReg = project.hasProperty('targetReg') ? project.getProperty('targetReg') : 'localhost:5000'
 
     // The tag used to tag the docker images push to the target registry
     targetTag = project.hasProperty('targetTag') ? project.getProperty('targetTag') : 'candidate'
 
-    // The tag used to tag the docker images push to the target registry
-    targetTag = project.hasProperty('targetTag') ? project.getProperty('targetTag') : 'candidate'
-
     comps = [
             'aaa' : [
                     'type':     'gitmodule',
@@ -90,41 +90,52 @@
                     'branch' : 'master',
                     'tag' : appVersion,
                     'componentDir': './apps/config'
-            ],
-            'nginx': [
-                    'type':     'image',
-                    'upstream': upstreamReg,
-                    'name':     'nginx',
-                    'digest':   'sha256:b555f8c64ab4e85405e0d8b03f759b73ce88deb802892a3b155ef55e3e832806'
             ]
     ]
 }
 
-// ~~~~~~~~~~~~~~~~~~~ Global tasks ~~~~~~~~~~~~~~~~~~~~~~~
 
 task fetchGitSubmodules {
     comps.each { name, spec -> if (spec.type == 'gitmodule') { dependsOn "gitupdate" + name } }
 }
 
+task buildOnosApps (type: Exec) {
+    workingDir './apps'
+    commandLine 'mvn', 'clean', 'install'
+}
+
+task copyLocalRepo (dependsOn: buildOnosApps, type: Exec) {
+    workingDir './'
+    commandLine 'cp', '-R', System.env.HOME + '/.m2/repository', 'repository'
+}
+
+task buildRepoImage (dependsOn: copyLocalRepo, type: Exec) {
+    commandLine 'docker', 'build', '-t', 'cordproject/mavenrepo', '.'
+}
+
+task tagMavenRepoImage (type: Exec) {
+    commandLine 'docker', 'tag', 'cordproject/mavenrepo', "$targetReg/mavenrepo:$targetTag"
+}
+
+task publishMavenRepoImage (type: Exec) {
+    dependsOn tagMavenRepoImage
+    commandLine 'docker', 'push', "$targetReg/mavenrepo:$targetTag"
+}
+
+// ~~~~~~~~~~~~~~~~~~~ Global tasks ~~~~~~~~~~~~~~~~~~~~~~~
+
 task fetch {
     dependsOn fetchGitSubmodules
 }
 
-// To be used to generate all needed binaries that need to be present on the target
-// as docker images in the local docker runner.
-task buildImages (dependsOn: fetch, type: Exec){
-    workingDir './apps'
-    commandLine 'mvn', 'clean', 'install'
-    
-    workingDir './'
-
-    commandLine 'cp', '-R', '~/.m2/repository' 'repository/'
-    commandLine 'docker', 'build', '-t', 'cordproject/mavenrepo', '.'
+task buildImages (dependsOn: fetch) {
+    dependsOn buildOnosApps
+    dependsOn copyLocalRepo
+    dependsOn buildRepoImage
 }
 
-// Publish image(s) built during the build step into targetReg registry using the targetTag
-// tag. See maas subproject for examples on how to do this.
-task publish (dependsOn: buildImages, type: Exec) {
+task publish {
+    dependsOn publishMavenRepoImage
 }
 
 tasks.addRule(new GitSubmoduleUpdateRule(project))
