Skip to content
Snippets Groups Projects
Commit b777efae authored by Daniel Stonier's avatar Daniel Stonier
Browse files

allow catkin_make to compile empty gradle packages, also dynamically add tasks...

allow catkin_make to compile empty gradle packages, also dynamically add tasks for both library and app projects.
parent b7176ffa
No related branches found
No related tags found
No related merge requests found
...@@ -71,8 +71,7 @@ macro(catkin_rosjava_setup) ...@@ -71,8 +71,7 @@ macro(catkin_rosjava_setup)
_rosjava_env() _rosjava_env()
find_gradle() find_gradle()
if( ${ARGC} EQUAL 0 ) if( ${ARGC} EQUAL 0 )
# Note : COMMAND is a list of variables (semi-colon separated) return() # Nothing to do (typically no subprojects created yet)
set(gradle_tasks "publishMavenJavaPublicationToMavenRepository") # old targets "install;installApp;uploadArchives"
else() else()
set(gradle_tasks ${ARGV}) set(gradle_tasks ${ARGV})
endif() endif()
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
from __future__ import print_function from __future__ import print_function
import os import os
import re
import sys import sys
import argparse import argparse
import xml.etree.ElementTree as ElementTree import xml.etree.ElementTree as ElementTree
...@@ -151,7 +152,7 @@ def add_to_package_xml(name): ...@@ -151,7 +152,7 @@ def add_to_package_xml(name):
package_xml.write(new_contents) package_xml.write(new_contents)
def add_install_app_to_cmake_targets(): def add_tasks_to_cmake_setup(tasks):
''' '''
Adds project name to build_depends in package.xml (should be same name as the ros msg package name). Adds project name to build_depends in package.xml (should be same name as the ros msg package name).
''' '''
...@@ -165,11 +166,23 @@ def add_install_app_to_cmake_targets(): ...@@ -165,11 +166,23 @@ def add_install_app_to_cmake_targets():
console.pretty_println("\nCouldn't find the root level CMakeLists.txt - not adding to the superproject.") console.pretty_println("\nCouldn't find the root level CMakeLists.txt - not adding to the superproject.")
return return
with open(cmakelists_txt_path, 'r') as cmakelists_txt: with open(cmakelists_txt_path, 'r') as cmakelists_txt:
old_contents = cmakelists_txt.read()
result = re.search('^catkin_rosjava_setup\(.*\)', old_contents, re.MULTILINE)
if result is None:
console.pretty_println("\nCouldn't find a catkin_rosjava_setup entry in the CMakeLists.txt - not adding tasks.")
return
rosjava_setup_string = result.group(0)
gradle_tasks = set([])
if rosjava_setup_string.find("publishMavenJavaPublicationToMavenRepository") != -1:
gradle_tasks.add("publishMavenJavaPublicationToMavenRepository")
if rosjava_setup_string.find("installApp") != -1:
gradle_tasks.add("installApp")
gradle_tasks |= set(tasks)
console.pretty_print(' File : ', console.cyan) console.pretty_print(' File : ', console.cyan)
console.pretty_println('CMakeLists.txt (gradle task update)', console.yellow) console.pretty_println('CMakeLists.txt (gradle task update)', console.yellow)
old_text = 'catkin_rosjava_setup(publishMavenJavaPublicationToMavenRepository)' old_text = rosjava_setup_string
new_text = 'catkin_rosjava_setup(publishMavenJavaPublicationToMavenRepository installApp)' new_text = 'catkin_rosjava_setup(' + ' '.join(gradle_tasks) + ')'
new_contents = cmakelists_txt.read().replace(old_text, new_text) new_contents = old_contents.replace(old_text, new_text)
with open(cmakelists_txt_path, 'w') as cmakelists_txt: with open(cmakelists_txt_path, 'w') as cmakelists_txt:
cmakelists_txt.write(new_contents) cmakelists_txt.write(new_contents)
...@@ -223,7 +236,7 @@ def create_rosjava_project(): ...@@ -223,7 +236,7 @@ def create_rosjava_project():
author = args.author author = args.author
create_rosjava_project_common(args, 'rosjava_project') create_rosjava_project_common(args, 'rosjava_project')
create_talker_listener_classes(project_name, 'rosjava_project', author) create_talker_listener_classes(project_name, 'rosjava_project', author)
add_install_app_to_cmake_targets() add_tasks_to_cmake_setup(['installApp', 'publishMavenJavaPublicationToMavenRepository'])
def create_rosjava_library_project(): def create_rosjava_library_project():
...@@ -231,6 +244,7 @@ def create_rosjava_library_project(): ...@@ -231,6 +244,7 @@ def create_rosjava_library_project():
project_name = args.name[0] project_name = args.name[0]
create_rosjava_project_common(args, 'rosjava_library_project') create_rosjava_project_common(args, 'rosjava_library_project')
create_dummy_java_class(project_name) create_dummy_java_class(project_name)
add_tasks_to_cmake_setup(['publishMavenJavaPublicationToMavenRepository'])
def create_rosjava_msg_project(): def create_rosjava_msg_project():
...@@ -239,3 +253,4 @@ def create_rosjava_msg_project(): ...@@ -239,3 +253,4 @@ def create_rosjava_msg_project():
create_rosjava_project_common(args, 'rosjava_msg_project') create_rosjava_project_common(args, 'rosjava_msg_project')
add_catkin_generate_tree_command() add_catkin_generate_tree_command()
add_to_package_xml(project_name) add_to_package_xml(project_name)
add_tasks_to_cmake_setup(['publishMavenJavaPublicationToMavenRepository'])
...@@ -10,8 +10,13 @@ project(%(repo_name)s) ...@@ -10,8 +10,13 @@ project(%(repo_name)s)
############################################################################## ##############################################################################
find_package(catkin REQUIRED rosjava_build_tools) find_package(catkin REQUIRED rosjava_build_tools)
# Set the gradle targets you want catkin's make to run by default
catkin_rosjava_setup(publishMavenJavaPublicationToMavenRepository) # Set the gradle targets you want catkin's make to run by default, e.g.
# catkin_rosjava_setup(installApp)
# Note that the catkin_create_rosjava_xxx scripts will usually automatically
# add tasks to this for you when you create subprojects.
catkin_rosjava_setup()
catkin_package() catkin_package()
############################################################################## ##############################################################################
......
...@@ -59,8 +59,14 @@ subprojects { ...@@ -59,8 +59,14 @@ subprojects {
/* /*
Some useful tasks: Some useful tasks:
install: deploys jar's to MavenLocal() (i.e. ~/.m2/repository) install: deploys jar's to MavenLocal() (i.e. ~/.m2/repository)
publishMavenJavaPublicationToMavenRepository : deploys jar's to devel/share/maven publishMavenJavaPublicationToMavenRepository : deploys jar's to devel/share/maven
installApp : assembles java apps in the _subproject_/build directories. installApp : assembles java apps in the _subproject_/build directories.
Note that these are dependent on the type of project (e.g. installApp is only valid for
java binary subprojects, while publishMavenJav... is only added once a subproject is included.
If you're using catkin_make, this is not important, since it will use the task list specified
in CMakeLists.txt
*/ */
defaultTasks 'install' defaultTasks 'tasks'
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment