[
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)