Yes David, I think I'm seeing what's you have explained. Although we
haven't defined a version in the Export-Package instruction, the
bundle-plugin has added the bundle's version to the Export in the generated
bundle manifest. And when using that bundle as a compile dependency in the
consumer bundles, a version range has being added.

Thanks Neil for your clarifications, so basically as I understand I have to
make sure the compile-time dependency used in the consumer bundle should
match the bundle-version of the producer bundle.

Thanks,
Dileepa


On Wed, Nov 7, 2012 at 10:43 PM, David Jencks <[email protected]>wrote:

> 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]
>
>


-- 
Dileepa Jayakody,
Software Engineer, WSO2 Inc.
Lean . Enterprise . Middleware

Mobile : +94777-857616

Reply via email to