rougeSE opened a new issue, #2144:
URL: https://github.com/apache/karaf/issues/2144

   When using the features-generate-descriptor goal of the karaf-maven-plugin, 
including a feature dependency that has been defined with a classifier other 
than "features" doesn't include the this as a dependent feature within the 
generated feature but rather includes the entire contents of the feature file 
as bundles.
   
   For example, the ActiveMQ client features are defined within dependency
   
   ```xml
   <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-karaf</artifactId>
        <classifier>features-core</classifier>
        <type>xml</type>
   </dependency>
   ```
   
   Including this dependency results in a feature file with all the bundles of 
the features-core injected into our generated feature
   
   ```xml
   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <features xmlns="http://karaf.apache.org/xmlns/features/v1.6.0"; 
name="features-test">
       <feature name="features-test" description="features-test" 
version="0.0.1.SNAPSHOT">
           <feature prerequisite="true" dependency="false">wrap</feature>
           <bundle>mvn:com.test/test-bundle/0.0.1-SNAPSHOT</bundle>
           
<bundle>wrap:mvn:org.apache.activemq/activemq-karaf/5.18.3/xml/features-core</bundle>
           
<bundle>mvn:org.apache.geronimo.specs/geronimo-jms_2.0_spec/1.0-alpha-2</bundle>
           <bundle>mvn:org.ops4j.pax.logging/pax-logging-api/2.1.3</bundle>
           <bundle>mvn:org.osgi/osgi.core/7.0.0</bundle>
           <bundle>mvn:org.osgi/osgi.cmpn/7.0.0</bundle>
           <bundle>mvn:org.ops4j.pax.logging/pax-logging-log4j2/2.1.3</bundle>
           
<bundle>mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.core/1.10.2</bundle>
           
<bundle>mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.api/1.0.0</bundle>
           
<bundle>mvn:org.apache.aries.quiesce/org.apache.aries.quiesce.api/1.0.0</bundle>
           
<bundle>mvn:org.apache.aries.proxy/org.apache.aries.proxy.api/1.1.0</bundle>
           
<bundle>mvn:org.apache.felix/org.apache.felix.framework/5.6.12</bundle>
           
<bundle>mvn:org.apache.felix/org.apache.felix.bundlerepository/2.0.10</bundle>
           <bundle>mvn:org.osgi/org.osgi.core/6.0.0</bundle>
           <bundle>mvn:org.easymock/easymock/3.4</bundle>
           <bundle>mvn:org.objenesis/objenesis/2.2</bundle>
           
<bundle>mvn:org.apache.karaf.shell/org.apache.karaf.shell.console/4.3.7</bundle>
           <bundle>mvn:org.jline/jline/3.21.0</bundle>
           <bundle>mvn:org.fusesource.jansi/jansi/2.4.0</bundle>
           
<bundle>mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.modules/4.3.7</bundle>
           
<bundle>mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.config/4.3.7</bundle>
           <bundle>mvn:jakarta.xml.bind/jakarta.xml.bind-api/2.3.3</bundle>
           <bundle>mvn:jakarta.activation/jakarta.activation-api/1.2.2</bundle>
           <bundle>mvn:org.glassfish.jaxb/jaxb-runtime/2.3.3</bundle>
           <bundle>wrap:mvn:org.glassfish.jaxb/txw2/2.3.3</bundle>
           <bundle>mvn:com.sun.istack/istack-commons-runtime/3.0.11</bundle>
           <bundle>wrap:mvn:javax.activation/activation/1.1.1</bundle>
           
<bundle>mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.boot/4.3.7</bundle>
           
<bundle>mvn:org.apache.karaf.shell/org.apache.karaf.shell.core/4.3.7</bundle>
           <bundle>mvn:org.apache.sshd/sshd-osgi/2.8.0</bundle>
           <bundle>mvn:org.slf4j/jcl-over-slf4j/1.7.32</bundle>
           <bundle>mvn:org.apache.activemq/activemq-http/5.18.3</bundle>
           <bundle>wrap:mvn:org.apache.activemq/activemq-spring/5.18.3</bundle>
           <bundle>wrap:mvn:org.apache.activemq/activemq-broker/5.18.3</bundle>
           
<bundle>wrap:mvn:org.apache.activemq/activemq-openwire-legacy/5.18.3</bundle>
           <bundle>mvn:javax.annotation/javax.annotation-api/1.3.2</bundle>
           <bundle>wrap:mvn:org.springframework/spring-context/5.3.30</bundle>
           <bundle>wrap:mvn:org.springframework/spring-aop/5.3.30</bundle>
           <bundle>wrap:mvn:org.springframework/spring-beans/5.3.30</bundle>
           <bundle>wrap:mvn:org.springframework/spring-core/5.3.30</bundle>
           <bundle>wrap:mvn:org.springframework/spring-jcl/5.3.30</bundle>
           
<bundle>wrap:mvn:org.springframework/spring-expression/5.3.30</bundle>
           <bundle>wrap:mvn:org.springframework/spring-jms/5.3.30</bundle>
           <bundle>wrap:mvn:org.springframework/spring-messaging/5.3.30</bundle>
           <bundle>wrap:mvn:org.springframework/spring-tx/5.3.30</bundle>
           <bundle>wrap:mvn:org.apache.activemq/activemq-mqtt/5.18.3</bundle>
           
<bundle>wrap:mvn:org.apache.activemq.protobuf/activemq-protobuf/1.1</bundle>
           <bundle>mvn:org.fusesource.mqtt-client/mqtt-client/1.16</bundle>
           
<bundle>mvn:org.fusesource.hawtdispatch/hawtdispatch-transport/1.22</bundle>
           <bundle>mvn:org.fusesource.hawtdispatch/hawtdispatch/1.22</bundle>
           <bundle>mvn:org.slf4j/slf4j-api/2.0.9</bundle>
           <bundle>mvn:org.eclipse.jetty/jetty-server/9.4.53.v20231009</bundle>
           <bundle>mvn:javax.servlet/javax.servlet-api/3.1.0</bundle>
           <bundle>mvn:org.eclipse.jetty/jetty-http/9.4.53.v20231009</bundle>
           <bundle>mvn:org.eclipse.jetty/jetty-io/9.4.53.v20231009</bundle>
           <bundle>mvn:org.eclipse.jetty/jetty-xml/9.4.53.v20231009</bundle>
           <bundle>mvn:org.eclipse.jetty/jetty-util/9.4.53.v20231009</bundle>
           <bundle>mvn:org.eclipse.jetty/jetty-webapp/9.4.53.v20231009</bundle>
           <bundle>mvn:org.eclipse.jetty/jetty-servlet/9.4.53.v20231009</bundle>
           
<bundle>mvn:org.eclipse.jetty/jetty-security/9.4.53.v20231009</bundle>
           
<bundle>mvn:org.eclipse.jetty/jetty-util-ajax/9.4.53.v20231009</bundle>
           <bundle>wrap:mvn:org.apache.httpcomponents/httpclient/4.5.14</bundle>
           <bundle>wrap:mvn:org.apache.httpcomponents/httpcore/4.4.16</bundle>
           <bundle>mvn:commons-logging/commons-logging/1.2</bundle>
           <bundle>mvn:commons-codec/commons-codec/1.11</bundle>
           <bundle>mvn:com.thoughtworks.xstream/xstream/1.4.20</bundle>
           <bundle>mvn:io.github.x-stream/mxparser/1.2.2</bundle>
           <bundle>wrap:mvn:xmlpull/xmlpull/1.1.3.1</bundle>
           
<bundle>mvn:org.apache.activemq/activemq-log4j-appender/5.18.3</bundle>
           <bundle>mvn:org.apache.activemq/activemq-client/5.18.3</bundle>
           <bundle>mvn:org.fusesource.hawtbuf/hawtbuf/1.11</bundle>
           <bundle>wrap:mvn:org.apache.activemq/activemq-console/5.18.3</bundle>
           
<bundle>wrap:mvn:org.apache.activemq/activemq-kahadb-store/5.18.3</bundle>
           <bundle>mvn:org.apache.activemq/activeio-core/3.1.4</bundle>
           
<bundle>mvn:org.apache.geronimo.specs/geronimo-j2ee-management_1.1_spec/1.0.1</bundle>
           <bundle>mvn:org.apache.commons/commons-pool2/2.12.0</bundle>
           <bundle>mvn:org.apache.xbean/xbean-spring/4.24</bundle>
           <bundle>mvn:org.fusesource.hawtbuf/hawtbuf-proto/1.11</bundle>
           <bundle>mvn:com.fasterxml.jackson.core/jackson-core/2.15.3</bundle>
           
<bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/2.15.3</bundle>
           
<bundle>mvn:com.fasterxml.jackson.core/jackson-databind/2.15.3</bundle>
           <bundle>mvn:org.apache.velocity/velocity-engine-core/2.3</bundle>
           <bundle>mvn:commons-collections/commons-collections/3.2.2</bundle>
           <bundle>mvn:org.apache.commons/commons-lang3/3.12.0</bundle>
           
<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.josql/1.5_5</bundle>
           <bundle>wrap:mvn:org.jasypt/jasypt/1.9.3</bundle>
           <bundle>mvn:commons-daemon/commons-daemon/1.3.4</bundle>
           <bundle>mvn:org.apache.activemq/activemq-pool/5.18.3</bundle>
           <bundle>mvn:org.apache.activemq/activemq-jms-pool/5.18.3</bundle>
           
<bundle>mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
       </feature>
   </features>
   ```
   
   The expected result is
   ```xml
   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <features xmlns="http://karaf.apache.org/xmlns/features/v1.6.0"; 
name="features-test">
       
<repository>mvn:org.apache.activemq/activemq-karaf/5.18.3/xml/features</repository>
       <feature name="features-test" description="features-test" 
version="0.0.1.SNAPSHOT">
           <feature version="5.18.3" prerequisite="false" 
dependency="false">activemq-client</feature>
           <feature version="5.18.3" prerequisite="false" 
dependency="false">activemq-cf</feature>
           <feature version="5.18.3" prerequisite="false" 
dependency="false">activemq</feature>
           <feature version="5.18.3" prerequisite="false" 
dependency="false">activemq-combined-jms-spec</feature>        
           <bundle>mvn:com.test/test-bundle/0.0.1-SNAPSHOT</bundle>
       </feature>
   </features>
   ```
   
   The cause for this is in the 
[org.apache.karaf.tooling.utils.Dependency31Helper.isFeature()](https://github.com/apache/karaf/blob/635421f36bdba739ee65894e98d8598925d80ba3/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/utils/Dependency31Helper.java#L286)
 and 
[GenerateDescriptorMojo.processFeatureArtifact()](https://github.com/apache/karaf/blob/main/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateDescriptorMojo.java#L603)
 where it is assumed the classifier for all features is 
["features"](https://github.com/apache/karaf/blob/main/deployer/kar/src/main/java/org/apache/karaf/deployer/kar/KarArtifactInstaller.java#L32).
   
   Considering we can use this plugin to generated "none standard" feature 
classifiers with the parameter <attachmentArtifactClassifier>, this results in 
a feature we can not later include with another feature.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to