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 3729c5be281f17599de389c007904e553fc89c26..a72e069d47520a5e615a1f81f029bb40838a8d01 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 @@ -108,9 +108,11 @@ class CatkinPackage { def name def version def dependencies + def directory def CatkinPackage(File packageXmlFilename) { def packageXml = new XmlParser().parse(packageXmlFilename) + directory = packageXmlFilename.parent name = packageXml.name.text() version = packageXml.version.text() dependencies = [] @@ -181,7 +183,7 @@ class CatkinPackage { 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.args = new ArrayList<String>([generatedSourcesDir, '--package-path=' + directory, name]) generateSourcesTask.classpath = p.configurations.runtime generateSourcesTask.main = 'org.ros.internal.message.GenerateInterfaces' p.tasks.compileJava.source generateSourcesTask.outputs.files diff --git a/message_generation/src/main/java/org/ros/internal/message/GenerateInterfaces.java b/message_generation/src/main/java/org/ros/internal/message/GenerateInterfaces.java index 1acdfcb8913e98712622fd39a3968acf55ca111e..46756b8b49f2c016482017a1f17063c58770f882 100644 --- a/message_generation/src/main/java/org/ros/internal/message/GenerateInterfaces.java +++ b/message_generation/src/main/java/org/ros/internal/message/GenerateInterfaces.java @@ -33,6 +33,7 @@ import java.io.File; import java.io.IOException; import java.util.Collection; import java.util.List; +import java.util.ListIterator; /** * @author damonkohler@google.com (Damon Kohler) @@ -69,7 +70,6 @@ public class GenerateInterfaces { packages = topicDefinitionFileProvider.getPackages(); } for (String pkg : packages) { - System.out.println("Package: " + pkg); Collection<MessageIdentifier> messageIdentifiers = topicDefinitionFileProvider.getMessageIdentifiersByPackage(pkg); if (messageIdentifiers != null) { @@ -159,6 +159,15 @@ public class GenerateInterfaces { arguments.add("."); } String rosPackagePath = System.getenv(ROS_PACKAGE_PATH); + // Overwrite with a supplied package path if specified (--package-path=) + for (ListIterator<String> iter = arguments.listIterator(); iter.hasNext(); ) { + String arg = iter.next(); + if (arg.contains("--package-path=")) { + rosPackagePath = arg.replace("--package-path=", ""); + iter.remove(); + break; + } + } Collection<File> packagePath = Lists.newArrayList(); for (String path : rosPackagePath.split(File.pathSeparator)) { File packageDirectory = new File(path);