I have a slight recollection that with some new versions of bnd I've seen bnd 
use the bundle version when the export package version is missing.  I hope I've 
made this up :-).  I recall that there was something that got me to add export 
versions to the few bundles that were missing them.  If I didn't make this up 
it might possibly explain what Dileepa is seeing.

thanks
david jencks

On Nov 7, 2012, at 3:44 AM, Neil Bartlett wrote:

> You said "the exporting package doesn't have a version". But it must
> actually have a version because otherwise maven-bundle-plugin would not add
> the range on the Import-Package statement! The only thing I can think of is
> you are building against versioned bundles but deploying different,
> un-versioned bundles during runtime. Which is a bit of an odd thing to do...
> 
> Anyway if you use the same bundles/jars during both compilation and during
> runtime, then everything should be fine (which is pretty much what Felix
> said).
> 
> Regards
> Neil
> 
> On Wed, Nov 7, 2012 at 11:34 AM, Dileepa Jayakody <[email protected]> wrote:
> 
>> Hi Felix,
>> 
>> Thanks for your reply.
>> 
>> The main problem is we haven't defined versions for Exported packages in
>> the producer bundles.
>> 
>> eg: In org.foo.bar:1.0.2  bundle we define
>> Export-Package: org.foo.bar.*;
>> 
>> So when building the bundle the producer bundle's Export-Package is defined
>> without any version. The problem is when org.foo.bar.* is used as an
>> Import-Package in a consumer bundle. Even though we define Import-Package:
>> org.foo.bar.*; (without a version defined), when the consumer bundle is
>> built the bundle-plugin has injected a version range like [1.0.0,2.0.0).
>> 
>> The problem occurs when installing the bundles to our runtime using
>> Equinox, as it first resolves the bundle resolutions for Imports, Exports.
>> So regardless of the compile-time dependency used to build the consumer
>> bundle, we don't want to have a version injected to the org.foo.bar.*
>> Import, because the exporting package doesn't have a version.
>> Is there any mechanism for us to stop the bundle-plugin from injecting the
>> version for the Import-Package here?
>> In several cases where we faced this issue, we have defined the
>> Import-Package: org.foo.bar.*;*version="0.0.0"* so that it will get wired
>> to any version exported for the org.foo.bar.*
>> But using version="0.0.0" hack for all packages exported without a defined
>> version is not manageable at this moment.
>> 
>> I hope the problem we are facing, is clear to you. The best solution here
>> would be to define versions for Exports and use them appropriately in
>> relevant Imports.
>> But at the moment there are so many bundles that are exporting packages
>> without a defined version.
>> So can you please suggest an alternate mechanism to handle Imports Exports
>> with no versions specified in the bundle-plugin? Is there a mechanism we
>> can tell the bundle-plugin not to compute version-ranges for Imports? Or is
>> there an older version of the bundle-plugin this functionality is not
>> available?
>> 
>> Thanks a lot!
>> 
>> Regards,
>> Dileepa
>> 
>> 
>> 
>> 
>> On Wed, Nov 7, 2012 at 2:26 PM, Felix Meschberger <[email protected]
>>> wrote:
>> 
>>> Hi,
>>> 
>>> Am 07.11.2012 um 08:54 schrieb Dileepa Jayakody:
>>> 
>>>> Hi All,
>>>> 
>>>> We are having a problem using maven-bundle-plugin to build our bundles,
>>>> where it injects a version-range (I think it computes the version range
>>>> from the compile-time maven-dependency) to the bundle's
>> Import-Packages.
>>>> 
>>>> For eg : when I have specified an Import-Package: org.foo.bar; The
>> plugin
>>>> injects a version range like Import-Package:
>> org.foo.bar;version="[1.0.0,
>>>> 2.0.0)" probably by computing from the compile time dependency version
>> of
>>>> the maven artifact exposing org.foo.bar package.
>>>> 
>>>> The problem is many of our producer bundles are not exporting their
>>>> packages with versions. So when the bundle-plugin computes and injects
>> a
>>>> version range to relevant consumer bundle's Import-Package, the
>>> resolution
>>>> get broken because there is no exporter for that package within the
>>>> required version-range.
>>>> I know, we should manage versions in Exports/Imports properly but it's
>>> not
>>>> manageable at the moment with the number of bundles has exceeded 300.
>>> 
>>> So your dependencies expose exported package version and your deployed
>>> bundles don't ? This sounds like a strange situation.
>>> 
>>> Looks like you are building against newer versions than the deployed ones
>>> ? If so, I suggest to build against the same versions as you have
>> deployed.
>>> 
>>> In general my take on this is to always compile to the lowest version
>>> dependency that meets the (API) needs of the code you are compiling. This
>>> way your lower version in the range will really expose what the bundle
>>> needs and you will have less surprises at deployment time.
>>> 
>>> The idea is that you develop with a certain version of a dependency (even
>>> though Maven's dependencies and OSGi's Import-Package need not be the
>> same)
>>> and that you expect at least that version of the dependency or a newer
>> one
>>> to be actually deployed.
>> 
>> 
>>> Regards
>>> Felix
>>> 
>>>> 
>>>> Can I please know how can I explicitly avoid the version-range injected
>>> to
>>>> Import-Package? Is this feature of computing version-range for Imports
>>>> added to maven-bundle-plugin (bnd) in a recent released version?
>>>> We are using 2.3.5 version of the bundle-plugin.
>>>> If this feature has been added to a recent version of the plugin , can
>>> you
>>>> please specify an older version of the bundle-plugin that doesn't
>> compute
>>>> version ranges for Import-Package?
>>>> At the moment our immediate requirement is to stop adding
>> version-ranges
>>>> for Import-Package
>>>> 
>>>> Appreciate your insight on this.
>>>> 
>>>> Thanks,
>>>> Dileepa
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>> 
>>> 
>> 
>> 
>> --
>> Dileepa Jayakody,
>> Software Engineer, WSO2 Inc.
>> Lean . Enterprise . Middleware
>> 
>> Mobile : +94777-857616
>> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to