(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Rolling RosJava Debs

Description: Packaging your java (possibly mixed) projects as debs.

Keywords: rosjava debs

Tutorial Level: INTERMEDIATE

Next Tutorial: Uploading to Maven on Github


This is the first of two ways to package (the other being maven) and share your java artifacts.

Why Debs, not Maven Artifacts?

The next tutorial demonstrates how to upload as maven artifacts to our external repository. So this begs the question, why build debs?

  • Allows mixed packages, e.g. python scripts + roslaunchers + rosjava components
  • Easy installation and management of python, c++, java packages on a robot 1.

  • Conveniently take advantage of rosdep when preparing source workspaces.
  • Provides a single, pre-built, local maven repo in /opt/ros/indigo/share/maven.

Also, for the present, people can manage their own contributions themselves this way if they are more familiar with rolling debs (as most ros roboticists are) than pull requesting artifacts to a maven repository.

Preparing for a Bloom Release

Only one step needed, make sure you install the artifacts you have built in the CMakeLists.txt to the directory you have specified for the group in build.gradle. e.g. for a package called bob and group id of com.github.dude.bob, you would use the following cmake based install rule.


Once this is done, you can push your catkinized rosjava package through for a regular bloom release.


  1. Convention usually involves creating a single meta-package for a robot that brings in all of its dependencies. For easy installation and management, this is easy if it is all done via apt (compare with having to support a mix of apt, pip, maven (1)

Wiki: rosjava/Tutorials/indigo/Rolling RosJava Debs (last edited 2015-02-25 13:36:03 by DanielStonier)