diff --git a/rosjava_tutorial_pubsub/build.gradle b/rosjava_tutorial_pubsub/build.gradle
index b3c0d175ab54de7815d2ed935a406773c0d90eef..6a5dcbbffd6efddf07b08a1cb9869fae89821a89 100644
--- a/rosjava_tutorial_pubsub/build.gradle
+++ b/rosjava_tutorial_pubsub/build.gradle
@@ -21,3 +21,6 @@ mainClassName = 'org.ros.RosRun'
 dependencies {
   compile project(':rosjava')
 }
+
+defaultTasks 'publishMavenJavaPublicationToMavenRepository', 'installApp'
+
diff --git a/rosjava_tutorial_pubsub/src/main/java/org/ros/rosjava_tutorial_pubsub/Talker.java b/rosjava_tutorial_pubsub/src/main/java/org/ros/rosjava_tutorial_pubsub/Talker.java
index 772ab87a0f0a65abde9455e6f89874d2649e3731..645d6ebc4c72417a2c86fae0619ff26a8c450f16 100644
--- a/rosjava_tutorial_pubsub/src/main/java/org/ros/rosjava_tutorial_pubsub/Talker.java
+++ b/rosjava_tutorial_pubsub/src/main/java/org/ros/rosjava_tutorial_pubsub/Talker.java
@@ -29,6 +29,16 @@ import org.ros.node.topic.Publisher;
  * @author damonkohler@google.com (Damon Kohler)
  */
 public class Talker extends AbstractNodeMain {
+  private String topic_name;
+
+  public Talker() {
+    topic_name = "chatter";
+  }
+
+  public Talker(String topic)
+  {
+    topic_name = topic;
+  }
 
   @Override
   public GraphName getDefaultNodeName() {
@@ -38,7 +48,7 @@ public class Talker extends AbstractNodeMain {
   @Override
   public void onStart(final ConnectedNode connectedNode) {
     final Publisher<std_msgs.String> publisher =
-        connectedNode.newPublisher("chatter", std_msgs.String._TYPE);
+        connectedNode.newPublisher(topic_name, std_msgs.String._TYPE);
     // This CancellableLoop will be canceled automatically when the node shuts
     // down.
     connectedNode.executeCancellableLoop(new CancellableLoop() {