Allow updation of an artifact's manifest at the final stage
-----------------------------------------------------------

                 Key: FELIX-3018
                 URL: https://issues.apache.org/jira/browse/FELIX-3018
             Project: Felix
          Issue Type: New Feature
          Components: Maven Bundle Plugin
    Affects Versions: maven-bundle-plugin-2.3.4
            Reporter: Sahoo


Please take a look at the discussion in FELIX-1571 that triggered this RFE to 
be filed. 

There are at least two predominant approaches to generating OSGi bundles using 
maven-bundle-plugin:
a) Use packaging type like war, jar, ejb, etc., configure bundle plugin's 
manifest goal to be run in an appropriate phase like process-classes and 
configure the maven-archiver to use bundle plugin generated MANIFEST.MF in the 
final artifact. 

b) Use packaging type bundle so that bundle plugin is responsible for making 
the final jar as well.

Each have their pros and cons. Contrary to approach #b, which is an OSGi-first 
approach, approach #a is where OSGi metadata generation is an additional step 
in the build process. User sets up the their project following maven 
conventions as per their packaging type and then they additionally configure 
bundle plugin to help them generate a valid OSGi bundle. It is but natural that 
many enterprise Java developers who are used to developing wars, ejb jars, etc. 
prefer approach #a. 

With all the recent fixes to maven-bundle-plugin, things have improved quite a 
lot. Approach #a is an optimal way to generate proper OSGi bundle except when 
there are dependencies embedded in the final jar. e.g., user may like to embed 
some jars in their WEB-INF/lib of the WAB. In such a case, maven archiver knows 
what all jars to be embedded; after all it is making the final war file. Yet, 
one has to repeat some of this in Embed-Dependency instruction of bundle plugin 
in order for bundle plugin to generate proper Bundle-ClassPath and 
Import-Package header. If Embed-Dependency has extra jars, then unnecessary 
Import-Package and Bundle-ClassPath will appear in the OSGi metadata. If 
Embed-Dependency has less jars, then the reverse will happen. I agree to the 
following comment made by Stuart in FELIX-1571:

"I think the proper solution may be to create a new feature that lets you 
update the manifest in the generated project artifact. That way you have the 
WAR artifact available, so bnd can produce the right manifest (and verify it) - 
although one outstanding issue is this might affect signing... "

I don't know if there is someway to intercept maven-archiver processing, then 
bundle plugin could generate the manifest as the penultimate step in the 
packaging process. Anyway, I am sure with all the maven experts around, someone 
will suggest a way to do this.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to