Karaf 4.2.9 I have a bundle "bar" with commands declared with @Service. The bundle has dependency on "foo" which also containing commands declared using @Service. Commands from "bar" and "foo" are included in the "Karaf-Commands" of MANIFEST.MF
Looking at the karaf-services-maven-plugin, specifically GenerateServieMetaData.java, I see where Activators not in the output class path are ignored. There is not such check for services. Identification of Bundle Activators defined in dependency are ignored, but Services are not. Is this a bug in the karaf-services-maven-plugin? *** * MANIFEST.MF *** From Karaf-Commands = com.foo.internal,com.bar.internal.commands *** * From the Maven Build *** [INFO] --- karaf-services-maven-plugin:4.2.9:service-metadata-generate (service-metadata-generate) @ ewm-tpm-server --- [INFO] Ignoring jar:file:/Users/paul/.m2/repository/com/foo/2.0.0-SNAPSHOT/foo-2.0.0-SNAPSHOT.jar!/com/foo/internal/Activator.class [INFO] Service com.foo.internal.JobsListCommand [INFO] Service com.foo.internal.JobResumeCommand [INFO] Service com.foo.internal.JobPauseCommand [INFO] Service com.bar.internal.commands.AddCommand [INFO] Service com.bar.internal.commands.StatusCommand [INFO] Service com.bar.internal.commands.UpdateCommand [INFO] Service com.bar.internal.commands.ListCommand *** * org.apache.karaf.tooling.tracker.GenerateServieMetaData * https://github.com/apache/karaf/blob/master/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java *** URL classUrl = clazz.getClassLoader().getResource(clazz.getName().replace('.', '/') + ".class"); URL outputDirectoryUrl = new File(project.getBuild().getOutputDirectory()).toURI().toURL(); if (classUrl == null || !classUrl.getPath().startsWith(outputDirectoryUrl.getPath())) { getLog().info("Ignoring " + classUrl); continue; } ... for (Class<?> clazz : services) { getLog().info("Service " + clazz.getCanonicalName()); packages.add(clazz.getPackage().getName()); } Paul Spencer