From bf0f02c096345ca992208b8a82ad4a9eda5508c6 Mon Sep 17 00:00:00 2001
From: Daniel Stonier <d.stonier@gmail.com>
Date: Mon, 10 Jun 2013 14:24:23 +0900
Subject: [PATCH] use the maven publish plugin - less hackish maven local
 publishing

---
 cmake/rosjava.cmake.em                        | 43 +++++++------------
 src/rosjava_tools/create_package.py           | 18 +++++++-
 .../templates/android_package/build.gradle.in |  5 ++-
 .../templates/init_repo/build.gradle.in       | 22 ++--------
 4 files changed, 38 insertions(+), 50 deletions(-)

diff --git a/cmake/rosjava.cmake.em b/cmake/rosjava.cmake.em
index d52b600..637734f 100644
--- a/cmake/rosjava.cmake.em
+++ b/cmake/rosjava.cmake.em
@@ -42,9 +42,14 @@ endmacro()
 # that it is called in with install and installApp targets.
 macro(catkin_rosjava_setup)
     find_gradle()
+    if( ${ARGC} EQUAL 0 )
+      set(gradle_tasks "install installApp")
+    else()
+      string(REPLACE ";" " " gradle_tasks "${ARGV}")
+    endif()
     add_custom_target(gradle-${PROJECT_NAME}
         ALL
-        COMMAND ${CATKIN_ENV} ${${PROJECT_NAME}_gradle_BINARY} install installApp 
+        COMMAND ${CATKIN_ENV} ${${PROJECT_NAME}_gradle_BINARY} ${gradle_tasks} 
         WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
     )
     catkin_package_xml()
@@ -64,29 +69,6 @@ macro(catkin_rosjava_setup)
     add_dependencies(gradle-clean gradle-clean-${PROJECT_NAME})
 endmacro()
 
-##############################################################################
-# RosJava Repo
-##############################################################################
-
-# Calls the root level gradle wrapper to run the multi-project 
-# configuration and compile the entire suite.
-macro(catkin_rosjava_repo_setup)
-    find_gradle()
-    find_gradle_repo_root()
-    add_custom_target(gradle-${PROJECT_NAME}
-        ALL
-        COMMAND ${CATKIN_ENV} ${${PROJECT_NAME}_gradle_BINARY} install installApp 
-        WORKING_DIRECTORY ${${PROJECT_NAME}_gradle_ROOT}
-    )
-    catkin_package_xml()
-    foreach(depends in ${${PROJECT_NAME}_BUILD_DEPENDS})
-        if(TARGET gradle-${depends})
-            #message(STATUS "Adding dependency gradle-${depends}")
-            add_dependencies(gradle-${PROJECT_NAME} gradle-${depends})
-        endif()
-    endforeach()
-endmacro()
-
 ##############################################################################
 # Android Package
 ##############################################################################
@@ -95,14 +77,19 @@ endmacro()
 # assembleDebug or assembleRelease
 macro(catkin_android_setup)
     find_gradle()
-    if(CMAKE_BUILD_TYPE STREQUAL "Release")
-      set(gradle_task "assembleRelase")
+    if( ${ARGC} EQUAL 0 )
+      if(CMAKE_BUILD_TYPE STREQUAL "Release")
+        set(gradle_tasks "assembleRelase")
+      else()
+        set(gradle_tasks "assembleDebug")
+      endif()
     else()
-      set(gradle_task "assembleDebug")
+      set(gradle_tasks ${ARGV})
     endif()
+    message(STATUS "Gradle Tasks................${gradle_tasks}")
     add_custom_target(gradle-${PROJECT_NAME}
         ALL
-        COMMAND ${CATKIN_ENV} ${${PROJECT_NAME}_gradle_BINARY} ${gradle_task} install
+        COMMAND ${CATKIN_ENV} ${${PROJECT_NAME}_gradle_BINARY} ${gradle_tasks}
         WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
     )
     catkin_package_xml()
diff --git a/src/rosjava_tools/create_package.py b/src/rosjava_tools/create_package.py
index adcc5ba..54ae5d0 100644
--- a/src/rosjava_tools/create_package.py
+++ b/src/rosjava_tools/create_package.py
@@ -110,7 +110,8 @@ def create_gradle_package_files(args, author, is_library, sdk_version):
             filename = os.path.join(package_path, template_name)
             template = read_template_file(template_name)
             contents = instantiate_template(template, package_name, author, plugin_name, sdk_version)
-            print("Template")
+            if is_library:
+                contents += extra_gradle_library_text()
             try:
                 f = open(filename, 'w')
                 f.write(contents)
@@ -140,6 +141,21 @@ def add_to_root_gradle_settings(name):
         settings_gradle.write("include '%s'\n" % name)
 
 
+def extra_gradle_library_text():
+    text = "\n"
+    text += "/* http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds */\n"
+    text += "android.libraryVariants\n"
+    text += "publishing {\n"
+    text += "    publications {\n"
+    text += "        maven(MavenPublication) {\n"
+    text += "            /* artifact bundleDebug */\n"
+    text += "            artifact bundleRelease\n"
+    text += "        }\n"
+    text += "    }\n"
+    text += "}\n"
+    return text
+
+
 def create_android_package(is_library=False):
     args = parse_arguments()
     create_android_project(args.name[0], args.sdk_version, args.android_package_name, is_library)
diff --git a/src/rosjava_tools/templates/android_package/build.gradle.in b/src/rosjava_tools/templates/android_package/build.gradle.in
index 596f756..0faf4ef 100644
--- a/src/rosjava_tools/templates/android_package/build.gradle.in
+++ b/src/rosjava_tools/templates/android_package/build.gradle.in
@@ -17,12 +17,13 @@
 /* 
  Examples of 
    1) dependencies from another project in this gradle stack.
-   2) dependency from a maven repository.
+   2,3) dependency from a maven repository.
 */
 /* 
 dependencies {
-  compile project(':android_apps_core_components')
+  compile project(':local_android_library_dependency')
   compile 'ros.android_core:android_gingerbread_mr1:0.0.0-SNAPSHOT'
+  compile 'com.github.ros_java.android_extras:android_extras_gingerbread:0.1.0'
 }
 */
 
diff --git a/src/rosjava_tools/templates/init_repo/build.gradle.in b/src/rosjava_tools/templates/init_repo/build.gradle.in
index 879f871..27963df 100644
--- a/src/rosjava_tools/templates/init_repo/build.gradle.in
+++ b/src/rosjava_tools/templates/init_repo/build.gradle.in
@@ -34,7 +34,10 @@ subprojects {
             classpath 'com.android.tools.build:gradle:0.4.1'
         }
     }
+    
     apply plugin: 'maven'
+    apply plugin: "maven-publish"
+
     repositories {
         mavenLocal()
         maven {
@@ -46,10 +49,6 @@ subprojects {
         exclude group: 'xml-apis'
     }
 
-    /*
-       EXPERIMENTAL: Trick to get local maven installs until the plugin supports an
-       install step for aar's (coming soon).
-    */
     uploadArchives {
         repositories {
             mavenDeployer {
@@ -57,19 +56,4 @@ subprojects {
             }
         }
     }
-    task install() << {
-        description = 'installs .aar files to the local maven repository.'
-    }
-    
-    /* Get the debug versions of the aar's as well. */
-    afterEvaluate { Project project ->
-        if (plugins.findPlugin('android-library')) {
-            task doDebugArchives() << {
-                project.artifacts.add("default", bundleDebug)
-            }
-            doDebugArchives.dependsOn('bundleDebug')
-            uploadArchives.dependsOn('doDebugArchives')
-            install.dependsOn('uploadArchives')
-        }
-    }
 }
-- 
GitLab