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

David Jencks commented on FELIX-4831:
-------------------------------------

I don't believe it's appropriate or even plausible to do this in the maven 
bundle plugin.  It should be done in bnd.

For the extender capabilities, I don't really think there are enough extenders 
so that figuring out how to write the capability is a problem.  However I 
suppose a bnd specific annotation could be developed to add an extender 
capability.  Since the extender should know about the extender wiring so it 
only extends stuff not wired to other extenders of that kind, you shouldn't 
really be just adding the capability without awareness in the extender code.

For the extender requirement, this can be done with a bnd plugin that 
recognizes the bundle has stuff of kind that needs the extender and adds the 
requirement directly.  For instance the ds annotation processor now does this 
(master, not yet released AFAIK).  There's already some support in bnd for 
getting the syntax right by using bnd classes that structure the manifest 
entry.  Since capabilities all end up in one manifest entry I'm not sure how 
much more convenient it can get.

> Simplify the declaration of capabilities
> ----------------------------------------
>
>                 Key: FELIX-4831
>                 URL: https://issues.apache.org/jira/browse/FELIX-4831
>             Project: Felix
>          Issue Type: Improvement
>          Components: Maven Bundle Plugin
>    Affects Versions: maven-bundle-plugin-2.5.3
>            Reporter: Florian Brunner
>
> Declaring capabilities is currently rather cryptic. It requires a specific 
> syntax, which I believe is hard to remember for non-OSGi experts.
> E.g. to provide a CDI extension using PAX-CDI you would need something like 
> this:
>                         <Provide-Capability>
>                             org.ops4j.pax.cdi.extension; 
> extension=my-extension
>                         </Provide-Capability>
> To require the CDI extension you would need something like this:
>                     <instructions>
>                         <Require-Capability>
>                             osgi.extender; filter:="(osgi.extender=pax.cdi)", 
> org.ops4j.pax.cdi.extension; filter:="(extension=my-extension)"
>                         </Require-Capability>
>                     </instructions>
> The proposed solutions consists of 3 parts:
>  - a new property for the bundle goal of the Maven Bundle Plugin: 
> instructionsFile 
>   This property defines a properties file containing additional BND 
> instructions to take into consideration when executing the goal
> - a annotation library, which provides annotations for declaring BND 
> instructions
> - a custom annotation processor, which generates the instructionsFile from 
> the annotations
> This approach would:
> - guide the developer what to specify
> - doesn't require the developer to know the exact syntax
> - helps avoiding typos



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to