Resolve doesn't choose latest

I know that I’ll have to track this down myself eventually, but is there any obvious reason, why “resolve” doesn’t choose the latest version of bundle “org.jgrapes.webconsole.vuejs” but rather an older version (0.1.2.ga, not shown in the screenshot in order to keep it small)?

democonsole.bndrun specifies

-runrequires: \
    [...]
    bnd.identity; id=org.jgrapes.webconsole.vuejs; version=latest,
    [...]

… and 0.6.0.ga is obviously considered, but not chosen.

Just an idea:
Which -runrepos do you have defined in your .bndrun file?
E.g. when -runrepos does not contain one of the repos you have in your “Repositories” view in Eclipse, than maybe the repo which contains your expected version is not considered? We also had some confusion where the repolist in eclipse was different than the repos used in .bndrun.

None. It’s a bndrun file based on a workspace. So the available repositories should be the same for any action.

(Nevertheless, yet another interesting bnd option. Never noticed it before.)

While reading your reply I am now not sure: Are runrepos considered also for resolving or is it only for running? Just found this which menions resolving. hmm… anybody else?

At a first glance (haven’t had a chance to look in detail), it looks like it’s including the right version of the bundle, but the package in the bundle is unversioned (“0.0.0”). Is that perhaps the issue?

Thanks for the hint! Maybe. I’ve create a new version of the bundle without a package version (instead of explicitly specifying “0.0.0”). Now resolution works again.

To me, this seems extremely strange for several reasons.

  • It shouldn’t make a difference in the first place because the specification says that if you do not specify a package version, it defaults to “0.0.0”.
  • All versions of this bundle have up to now used the package version “0.0.0” (it is a “consuming only” bundle, so versioning the packages doesn’t make sense). Therefore the only criterion for the resolver to select “an exporter” should be the bundle version – and the directive says to use the “latest”.
  • Specifying the package version as “0.0.0” and relying on the resolver to pick the highest bundle version works for a lot of similar bundles in my project.

Therefore I’m wondering if this fixes things only “by chance”. I’m a bit reluctant to remove the version from the package exports in all my “consuming only” bundles…