You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by Stuart McCulloch <mc...@gmail.com> on 2009/05/13 20:07:48 UTC

Re: Help needed with maven-bundle-plugin (was: Re: Geronimo Spec jar naming/versioning)

2009/5/14 David Jencks <da...@yahoo.com>

> Since no one has responded and the bundle plugin appears to claim there is
> some unspecified way to specify a version for the contents of the bundle I
> should file a bug?
>

apologies - I was off sick at the start of this week, and have since been
very busy on other work that pays my bills ;)

I'll respond to your original email after I've grabbed a coffee (it's ~2am
here) ... but I don't believe there's a bug

thanks
> david jencks
>
>
> On May 10, 2009, at 9:40 AM, David Jencks wrote:
>
>  Lets start over.
>>
>> I'd like an way to get a package version for the packages in a bundle into
>> the Export-Packages and Import-Packages when using the maven-bundle-plugin
>> 2.0.0 or later, preferably without writing out these entries in the plugin
>> configuration.  Also, the behavior of this plugin appears to have changed
>> radically between 1.4.3 and 2.0.0 and configurations that used to produce
>> reasonable results now produce nonsense.
>>
>> I'll only show the manifest entries of interest to save space.
>>
>> First, supplying no configuration produces reasonable results that only
>> lack the version for the packages in the bundle:
>>
>> configuration:
>>       <plugin>
>>         <groupId>org.apache.felix</groupId>
>>         <artifactId>maven-bundle-plugin</artifactId>
>>         <version>2.0.0</version>
>>         <extensions>true</extensions>
>>         <configuration>
>>           <instructions>
>>          </instructions>
>>         </configuration>
>>       </plugin>
>>
>>
>> manifest entries;
>> Export-Package: javax.portlet.filter;uses:="javax.portlet,javax.xml.na
>> mespace,javax.servlet.http,org.w3c.dom",javax.portlet;uses:="javax.xm
>> l.namespace,javax.servlet.http,org.w3c.dom"
>> Import-Package: javax.portlet,javax.portlet.filter,javax.servlet.http;
>> version="2.5",javax.xml.namespace,org.w3c.dom
>>
>> What I'd like is some way to specify the version of the javax.portlet and
>> javax.portlet.filter packages in the Export-Package and Import-Package
>> headers without altering the uses clauses in the Export-Package header.
>>
>> I imagine the result would look something like this:
>> Export-Package: javax.portlet.filter;uses:="javax.portlet,javax.xml.na
>>
>> mespace,javax.servlet.http,org.w3c.dom";version="2.0",javax.portlet;uses:="javax.xm
>> l.namespace,javax.servlet.http,org.w3c.dom";version="2.0"
>> Import-Package:
>> javax.portlet;version="2.0",javax.portlet.filter;version="2.0",javax.servlet.http;
>> version="2.5",javax.xml.namespace,org.w3c.dom
>>
>> ----------------------------------------------------
>> I tried copying the  configuration style used in the geronimo spec
>> bundles.
>>
>> configuration:
>>  <properties>
>>   <portals.osgi.import.pkg>*</portals.osgi.import.pkg>
>>   <portals.osgi.export.pkg>*</portals.osgi.export.pkg>
>>   <portals.osgi.private.pkg/>
>>
>> <portals.osgi.export>!META-INF*,${portals.osgi.export.pkg}*;version=${portals.osgi.export.version}</portals.osgi.export>
>>   <portals.osgi.export.version>2.0</portals.osgi.export.version>
>>
>> <portals.osgi.import>!META-INF*,${portals.osgi.import.pkg}</portals.osgi.import>
>>   <portals.osgi.symbolic.name>${groupId}.${artifactId}</
>> portals.osgi.symbolic.name>
>>   <bnd.version.policy>$(version;==;$(@))</bnd.version.policy>
>>  </properties>
>> ...
>>       <plugin>
>>         <groupId>org.apache.felix</groupId>
>>         <artifactId>maven-bundle-plugin</artifactId>
>>         <version>2.0.0</version>
>>         <extensions>true</extensions>
>>         <configuration>
>>           <instructions>
>>             <Export-Package>${portals.osgi.export}</Export-Package>
>>             <Import-Package>${portals.osgi.import}</Import-Package>
>>             <Private-Package>${portals.osgi.private.pkg}</Private-Package>
>>             <_versionpolicy>${bnd.version.policy}</_versionpolicy>
>>           </instructions>
>>         </configuration>
>>       </plugin>
>>
>> manifest entries:
>> Export-Package: javax.servlet;version="2.0",javax.portlet.filter;uses:
>> ="javax.portlet,javax.xml.namespace,javax.servlet.http,org.w3c.dom";v
>> ersion="2.0",javax.portlet;uses:="javax.xml.namespace,javax.servlet.h
>> ttp,org.w3c.dom";version="2.0",javax.servlet.http;uses:="javax.servle
>> t";version="2.0",javax.servlet.resources;version="2.0"
>> Import-Package: javax.portlet;version="2.0",javax.portlet.filter;versi
>> on="2.0",javax.servlet;version="2.5",javax.servlet.http;version="2.5"
>> ,javax.servlet.resources;version="2.5",javax.xml.namespace,org.w3c.do
>> m
>>
>> There are several problems with this that I can see:
>> - too many imports
>> - exports include all imports, not just stuff in the bundle itself
>> - version 2.0 is applied to all exports, even the imports that are
>> imported with a different version.
>>
>>
>> If I go back to 1.4.3 I get more reasonable results:
>>
>> configuration:
>> same as above except using plugin v. 1.4.3
>>
>> manifest entries:
>>
>> Export-Package: javax.portlet.filter;uses:="javax.portlet,org.w3c.dom,
>> javax.servlet.http,javax.xml.namespace";version="2.0",javax.portlet;u
>> ses:="org.w3c.dom,javax.servlet.http,javax.xml.namespace";version="2.
>> 0"
>> Import-Package: javax.portlet;version="2.0",javax.portlet.filter;versi
>> on="2.0",javax.servlet.http,javax.xml.namespace,org.w3c.dom
>>
>> The only problem I see here is that the import of the servlet package
>> doesn't have a version.
>>
>> ---------------------------------------------------------------
>>
>> Just in case anyone reads this far, I reiterate: my goal is to specify the
>> version of the packages in the current bundle and have this show up in the
>> Export-Packages and Import-Packages headers, something like this:
>>
>> Export-Package: javax.portlet.filter;uses:="javax.portlet,javax.xml.na
>>
>> mespace,javax.servlet.http,org.w3c.dom";version="2.0",javax.portlet;uses:="javax.xm
>> l.namespace,javax.servlet.http,org.w3c.dom";version="2.0"
>> Import-Package:
>> javax.portlet;version="2.0",javax.portlet.filter;version="2.0",javax.servlet.http;
>> version="2.5",javax.xml.namespace,org.w3c.dom
>>
>> Do I have to write out these headers in their entirety in the plugin
>> configuration or is there some way to simply add the version to the
>> automatically generated headers?
>>
>> thanks
>> david jencks
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
>> For additional commands, e-mail: users-help@felix.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
>
>


-- 
Cheers, Stuart