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
Overview
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.
install(DIRECTORY ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_MAVEN_DESTINATION}/com/github/dude/${PROJECT_NAME}/ DESTINATION ${CATKIN_GLOBAL_MAVEN_DESTINATION}/com/github/dude/${PROJECT_NAME})
Once this is done, you can push your catkinized rosjava package through for a regular bloom release.
Footnotes
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)