Note: This tutorial assumes that you have completed the previous tutorials: Anatomy of a RosJava Package, Creating Rosjava Packages.
(!) 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.

To Build with Catkin or Gradle

Description: Explains when to use catkin_make and when to use the gradle wrapper.

Keywords: rosjava

Tutorial Level: BEGINNER

This tutorial provides some information on the different build methods for rosjava packages - these are catkin_make and the gradle wrapper.

Overview

A typical workspace will look like (refer to anatomy of a rosjava package for more details):

/src
  /rosjava_catkin_package_a
    /rosjava_gradle_subproject_a
    /rosjava_gradle_subproject_b
    /rosjava_gradle_subproject_c
  /rosjava_catkin_package_b
    /rosjava_gradle_subproject_d
    /rosjava_gradle_subproject_e
    /rosjava_gradle_subproject_f

The best way of understanding the usefulness of both build commands is to understand their scope. In the above workspace, catkin_make has scope across the whole workspace - it is responsible for linking and sequencing each catkin package/gradle (super)project. The gradle wrapper on the other hand only has scope within a single catkin package.

When to Use Catkin Make

Catkin make is useful in the following situations:

  • A first build of your entire workspace since it creates the setup.bash and is a one-shot way of building the entire workspace.
  • Continuous integration builds.

If we didn't have catkin packages linking the gradle projects, you'd need to compile each by hand, one by one, or have a bash script to do so for you.

When to Use the Gradle Wrapper

You can use catkin_make exclusively, but that can be annoyingly slow as it's running through the entire workspace. Just as for c++ catkin builds (where you use make), you can drop down a level and directly use the gradle wrapper to compile single gradle projects, or even subprojects.

Compiling a binary app subproject:

> source devel/setup.bash
> cd src/rosjava_catkin_package_a/my_pub_sub_tutorial
> ../gradlew installApp

Compiling a library subproject:

> source devel/setup.bash
> cd src/rosjava_catkin_package_a/my_java_library
> ../gradlew publishMavenJavaPublicationToMavenRepository

Wiki: rosjava/Tutorials/hydro/To Build with Catkin or Gradle (last edited 2014-03-09 04:09:30 by DanielStonier)