You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@karaf.apache.org by "Brian Topping (JIRA)" <ji...@apache.org> on 2012/05/13 08:07:50 UTC

[jira] [Commented] (KARAF-1390) Embedded features should have POM dependencies on the projects they represent

    [ https://issues.apache.org/jira/browse/KARAF-1390?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13274218#comment-13274218 ] 

Brian Topping commented on KARAF-1390:
--------------------------------------

I'm on call over the next 72 hours to get this thing nailed down!  Agree that 3.0 should not go out without this.
                
> Embedded features should have POM dependencies on the projects they represent
> -----------------------------------------------------------------------------
>
>                 Key: KARAF-1390
>                 URL: https://issues.apache.org/jira/browse/KARAF-1390
>             Project: Karaf
>          Issue Type: Improvement
>          Components: karaf-feature
>    Affects Versions: 3.0.0
>            Reporter: Brian Topping
>            Assignee: Jean-Baptiste Onofré
>             Fix For: 3.0.0
>
>         Attachments: k1390.patch
>
>
> The logic in karaf-maven-plugin:features-generate-descriptor looks at dependencies of the current project and will add project dependencies as either {{<bundle>}} or {{<feature>}} elements to a {{<feature>}} whose name matches the name of the project (or a new one if none exists).  There are two problems when dealing with features in group o.a.k.assemblies:
> # The features are created by hand using features.xml templates in src/main/feature
> # The POMs for these features do not have dependencies on the bundles that they reference
> This limits functionality in features-generate-descriptor that would otherwise avoid adding bundles that are already a a part of a feature that the project depends on.
> For instance:
> # Create a project that depends on spring-core and attaches a features.xml to a bundle with the plugin defaults.
> # A {{<features>}} file should be generated with one {{<feature>}} element.  Save the output.
> # Now, copy that output to {{src/main/feature}} and remove the bundles that were generated for it.  Add a reference to a standard Karaf feature (i.e. {{<feature name="spring"/>}}).
> # Add this dependency as the first dependency in the project POM:
> {code}
>         <dependency>
>             <groupId>org.apache.karaf.assemblies.features</groupId>
>             <artifactId>standard</artifactId>
>             <version>2.2.6</version>  <!-- use whatever version here -->
>             <classifier>features</classifier>
>             <type>xml</type>
>             <scope>provided</scope>
>         </dependency>
> {code}
> At this point, when we do a build, the bundle references spring-core as a bundle, even though we added a {{<feature name="spring"/>}} above. 
> The problem is that o.a.k.assemblies.features:standard does not have any dependencies, and because the features files themselves have insufficient data to create an artifact coordinate, it's difficult for the plugin to authoritatively know which version should be included in the generation.
> The primary piece of this solution then is to have the top-level dependencies referenced in the POM for the features.  This is by default in projects that actually create a bundle, but it needs to be done for features-only projects.  The next is a small patch for the plugin.  I'm in the process of putting these together.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira