I understand now, you are mixing BaseActivator and karaf-services-maven-plugin.
If you use Karaf-services-maven-plugin, you should not use the Activator for command (only for services, tracker, etc). Regards JB > Le 13 juil. 2020 à 14:56, Paul Spencer <[email protected]> a écrit : > > JB, > > >> On Jul 13, 2020, at 12:40 AM, Jean-Baptiste Onofre <[email protected]> wrote: >> >> Hi Paul, >> >> Not sure I fully understand what you mean, but ignoring Activator from a >> command perspective is by design. > > You say Activators are ignored by design, so why are services treated > differently? > >> >> The plugin scans for any packages part of the bundle (export or private, but >> not import). In your case, if foo is imported, it’s not scanned as it will >> register its own commands by its own (it’s to avoid to have some commands >> register by several bundles). > > How do I mark foo as imported? > >> If foo is private to "bar", then, commands will be scanned and added. >> >> Regards >> JB >> > > Paul Spencer > >>> Le 13 juil. 2020 à 00:42, Paul Spencer <[email protected]> a écrit >>> : >>> >>> 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 >>> >>> >>> >> >
