Bndtools 101 (https://github.com/bndtools/101) uses JPM4J, and after importing 101 into bndtools, anything is OK. Then, I downloaded bundle-hub(https://github.com/bndtools/bundle-hub) into my local env and plan to add bundle-hub as LocalIndexedRepo.
However, after adding bundle-hub as LocalIndexedRepo, Bndtools 101 projects built failed and build path problems happened. Please seeing the following image,
For an enterprise, it is normal to build itself private bundle repository , so, how to build private bundle repository correctly is very critical.
I have found the workaround :
because both bundle-hub and jpm4j have biz.aQute.bnd.annotation and osgi.core ..., and currently, bndtools 101 project added them into build path without specifying bundle version. So, bndtools can not identify selecting which bundle.
If I added them into build path by specifying bundle version(eg. biz.aQute.bnd.annotation 2.3.0), the issue will be resolved.
However, I always think that once meeting the issue, current behavior of bndtools seems not to be accepted. I think that correct behavior should be:
Once selecting a bundle from some repository, even if adding another repository containing the bundles with the same BSN, bndtools should always select the bundle from previous repository.At least, we should not see the errors. Maybe, some warnings are more suitable.
bnd will create a list of all bsns and then sorts the versions. It will then pick the lowest version for building and the highest version for running.
In general, you should specify a base version range for building. The resolving will then take care of the runtime bundles.