diff --git a/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/CatkinPlugin.groovy b/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/CatkinPlugin.groovy index c4fe340459e7c7b72ae781638accb05a12774aea..f1e63336ae941c9a81fe3dc3b3a4de08be47da83 100644 --- a/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/CatkinPlugin.groovy +++ b/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/CatkinPlugin.groovy @@ -146,7 +146,7 @@ class CatkinPackage { def void generateMessageArtifact(Project p) { p.version = version - p.dependencies.add("compile", 'org.ros.rosjava_bootstrap:message_generation:[0.1,)') + p.dependencies.add("compile", 'org.ros.rosjava_bootstrap:message_generation:[0.1,0.2)') messageDependencies().each { d -> p.dependencies.add("compile", p.dependencies.project(path: ':' + d)) } @@ -160,13 +160,36 @@ class CatkinPackage { p.tasks.compileJava.source generateSourcesTask.outputs.files } + def void generateUnofficialMessageArtifact(Project p) { + /* Couple of constraints here: + 1) maven group forced to org.ros.rosjava_messages to that all message artifact + dependencies are easily found. + 2) Open ended dependency range (takes the latest in ROS_PACKAGE_PATH) since we + don't know the artifact versions the user really wants. + */ + p.version = version + p.group = 'org.ros.rosjava_messages' + p.dependencies.add("compile", 'org.ros.rosjava_bootstrap:message_generation:[0.1,0.2)') + messageDependencies().each { d -> + p.dependencies.add("compile", 'org.ros.rosjava_messages:' + d + ':[0.1,)') + } + def generatedSourcesDir = "${p.buildDir}/generated-src" + def generateSourcesTask = p.tasks.create("generateSources", JavaExec) + generateSourcesTask.description = "Generate sources for " + name + generateSourcesTask.outputs.dir(p.file(generatedSourcesDir)) + generateSourcesTask.args = new ArrayList<String>([generatedSourcesDir, name]) + generateSourcesTask.classpath = p.configurations.runtime + generateSourcesTask.main = 'org.ros.internal.message.GenerateInterfaces' + p.tasks.compileJava.source generateSourcesTask.outputs.files + } + /* * Hack to work around for rosjava_test_msgs - look in a subfolder for the * msgs and name the artifact by the subfolder name/version. */ def void generateMessageArtifactInSubFolder(Project p, String subfolderName, List<String> dependencies) { // p.version = version use the subfolder's project version - p.dependencies.add("compile", 'org.ros.rosjava_bootstrap:message_generation:[0.1,)') + p.dependencies.add("compile", 'org.ros.rosjava_bootstrap:message_generation:[0.1,0.2)') dependencies.each { d -> p.dependencies.add("compile", p.dependencies.project(path: ':' + d)) }