diff --git a/CMakeLists.txt b/CMakeLists.txt
index 237f71a5d8f1090db665db980a77e73a73f287ec..0538e08e2bb274c33f1bfb7b607e50f2958293cd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,7 +11,7 @@ project(rosjava_bootstrap)
 
 find_package(catkin REQUIRED rosjava_build_tools)
 
-catkin_rosjava_setup(uploadArchives)
+catkin_rosjava_setup(publishMavenJavaPublicationToMavenRepository)
 
 catkin_package()
 
diff --git a/build.gradle b/build.gradle
index cfc394348c2a87ed87af502feb2f9843f64801c3..9d5ad1e7c149f5e456693bbfd755d476ac552da9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -26,13 +26,14 @@ project.ext {
 
 allprojects {
     group='org.ros.rosjava_bootstrap'
-    version = '0.1.5'
+    version = '0.1.6'
 }
 
 subprojects {
     /* Have to manually do this below since our gradle plugin is our sub project */
     apply plugin: 'java'
     apply plugin: 'maven'
+    apply plugin: 'maven-publish'
 
     sourceCompatibility = 1.6
     targetCompatibility = 1.6
@@ -50,9 +51,16 @@ subprojects {
         }
     }
     if ( project.rosMavenDeploymentRepository != 'null' && project.rosMavenDeploymentRepository != '' ) {
-        uploadArchives {
-            repositories.mavenDeployer {
-                repository(url: 'file://' + project.rosMavenDeploymentRepository)
+        publishing {
+            publications {
+                mavenJava(MavenPublication) {
+                    from components.java
+                }
+            }
+            repositories {
+                maven {
+                   url 'file://' + project.rosMavenDeploymentRepository 
+                }
             }
         }
     }
diff --git a/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/RosJavaPlugin.groovy b/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/RosJavaPlugin.groovy
index d7a8c99c61ad2dbe3d574a31bd4a1fa1ea2d81f6..ead1abbb8c334d57764f0edb5fba16d342956eba 100644
--- a/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/RosJavaPlugin.groovy
+++ b/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/RosJavaPlugin.groovy
@@ -2,6 +2,7 @@ package org.ros.gradle_plugins;
 
 import org.gradle.api.Project;
 import org.gradle.api.Plugin;
+import org.gradle.api.publish.maven.MavenPublication;
 import org.gradle.api.*;
 
 /*
@@ -13,17 +14,36 @@ class RosJavaPlugin implements Plugin<Project> {
     
 	def void apply(Project project) {
 	    this.project = project
+        if (!project.plugins.findPlugin('ros')) {
+            project.apply(plugin: 'ros')
+        }
         if (!project.plugins.findPlugin('java')) {
             project.apply(plugin: 'java')
         }
-        /* Disabling for now - may be source of build farm problems
+        if (!project.plugins.findPlugin('maven-publish')) {
+            project.apply(plugin: 'maven-publish')
+        }
         if (!project.plugins.findPlugin('osgi')) {
             project.apply(plugin: 'osgi')
         }
-        */
         
         project.sourceCompatibility = 1.6
         project.targetCompatibility = 1.6
+
+        if ( project.ros.mavenDeploymentRepository != 'null' && project.ros.mavenDeploymentRepository != '' ) {
+            project.publishing {
+                publications {
+                    mavenJava(MavenPublication) {
+                        from project.components.java
+                    }
+                }
+                repositories {
+                    maven {
+                       url 'file://' + project.ros.mavenDeploymentRepository
+                    }
+                }
+            }
+        }
     }
 }
 
diff --git a/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/RosPlugin.groovy b/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/RosPlugin.groovy
index aa4afbd6b7921b6037fedba34319003dfb0cfc3a..b97dccc8d16b13d53aef59c7523f123aa201eb38 100644
--- a/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/RosPlugin.groovy
+++ b/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/RosPlugin.groovy
@@ -22,19 +22,12 @@ class RosPlugin implements Plugin<Project> {
 	def void apply(Project project) {
 	    this.project = project
         if (!project.plugins.findPlugin('maven')) {
-            project.apply(plugin: org.gradle.api.plugins.MavenPlugin)
+            project.apply(plugin: 'maven')
         }
         /* Create project.ros.* property extensions */
         project.extensions.create("ros", RosPluginExtension)
         project.ros.mavenPath = "$System.env.ROS_MAVEN_PATH".split(':')
         project.ros.mavenDeploymentRepository = "$System.env.ROS_MAVEN_DEPLOYMENT_REPOSITORY"
-        if ( project.ros.mavenDeploymentRepository != 'null' && project.ros.mavenDeploymentRepository != '' ) {
-            project.uploadArchives {
-                repositories.mavenDeployer {
-                    repository(url: 'file://' + project.ros.mavenDeploymentRepository)
-                }
-            }
-        }
         /* 
          * Could use some better handling for when this is not defined as it sets
          * file://null, but it doesn't seem to hurt the process any
diff --git a/message_generation/build.gradle b/message_generation/build.gradle
index 735ace3fb69bf2350951219f4c431d0cd41cb130..66d4e1870cc65ed39c3d5cc1de633001bfab8d41 100644
--- a/message_generation/build.gradle
+++ b/message_generation/build.gradle
@@ -21,13 +21,6 @@ dependencies {
   compile 'org.apache.commons:com.springsource.org.apache.commons.io:1.4.0'
   compile 'commons-pool:commons-pool:1.6'
   compile 'org.apache.commons:com.springsource.org.apache.commons.lang:2.4.0'
-  
   compile project(':gradle_plugins')
 }
 
-jar {
-  manifest {
-    symbolicName = 'org.ros.rosjava_messages.message_generation'
-  }
-}
-