77from __future__ import print_function
88
99import os
10+ import re
1011import sys
1112import argparse
1213import xml .etree .ElementTree as ElementTree
@@ -151,7 +152,7 @@ def add_to_package_xml(name):
151152 package_xml .write (new_contents )
152153
153154
154- def add_install_app_to_cmake_targets ( ):
155+ def add_tasks_to_cmake_setup ( tasks ):
155156 '''
156157 Adds project name to build_depends in package.xml (should be same name as the ros msg package name).
157158 '''
@@ -165,11 +166,23 @@ def add_install_app_to_cmake_targets():
165166 console .pretty_println ("\n Couldn't find the root level CMakeLists.txt - not adding to the superproject." )
166167 return
167168 with open (cmakelists_txt_path , 'r' ) as cmakelists_txt :
169+ old_contents = cmakelists_txt .read ()
170+ result = re .search ('^catkin_rosjava_setup\(.*\)' , old_contents , re .MULTILINE )
171+ if result is None :
172+ console .pretty_println ("\n Couldn't find a catkin_rosjava_setup entry in the CMakeLists.txt - not adding tasks." )
173+ return
174+ rosjava_setup_string = result .group (0 )
175+ gradle_tasks = set ([])
176+ if rosjava_setup_string .find ("publishMavenJavaPublicationToMavenRepository" ) != - 1 :
177+ gradle_tasks .add ("publishMavenJavaPublicationToMavenRepository" )
178+ if rosjava_setup_string .find ("installApp" ) != - 1 :
179+ gradle_tasks .add ("installApp" )
180+ gradle_tasks |= set (tasks )
168181 console .pretty_print (' File : ' , console .cyan )
169182 console .pretty_println ('CMakeLists.txt (gradle task update)' , console .yellow )
170- old_text = 'catkin_rosjava_setup(publishMavenJavaPublicationToMavenRepository)'
171- new_text = 'catkin_rosjava_setup(publishMavenJavaPublicationToMavenRepository installApp )'
172- new_contents = cmakelists_txt . read () .replace (old_text , new_text )
183+ old_text = rosjava_setup_string
184+ new_text = 'catkin_rosjava_setup(' + ' ' . join ( gradle_tasks ) + ' )'
185+ new_contents = old_contents .replace (old_text , new_text )
173186 with open (cmakelists_txt_path , 'w' ) as cmakelists_txt :
174187 cmakelists_txt .write (new_contents )
175188
@@ -223,14 +236,15 @@ def create_rosjava_project():
223236 author = args .author
224237 create_rosjava_project_common (args , 'rosjava_project' )
225238 create_talker_listener_classes (project_name , 'rosjava_project' , author )
226- add_install_app_to_cmake_targets ( )
239+ add_tasks_to_cmake_setup ([ 'installApp' , 'publishMavenJavaPublicationToMavenRepository' ] )
227240
228241
229242def create_rosjava_library_project ():
230243 args = parse_arguments ()
231244 project_name = args .name [0 ]
232245 create_rosjava_project_common (args , 'rosjava_library_project' )
233246 create_dummy_java_class (project_name )
247+ add_tasks_to_cmake_setup (['publishMavenJavaPublicationToMavenRepository' ])
234248
235249
236250def create_rosjava_msg_project ():
@@ -239,3 +253,4 @@ def create_rosjava_msg_project():
239253 create_rosjava_project_common (args , 'rosjava_msg_project' )
240254 add_catkin_generate_tree_command ()
241255 add_to_package_xml (project_name )
256+ add_tasks_to_cmake_setup (['publishMavenJavaPublicationToMavenRepository' ])
0 commit comments