I have an OSGi bundle that is built using ANT and the classic BND tool. My bundle uses a library (JAR) internally, which is not available as a bundle within my OSGi container (Apache Felix). So, I am trying to embed it within my bundle, for access at runtime.
How can I embed such a library/JAR using ANT+BND?
(Note : I cannot use MAVEN, using which this could have been a lot easier)
You need two instructions in your
bnddescriptor. First useInclude-Resourceto include the target JAR into your bundle:Then you need to specify that foo.jar needs to be on the bundle classpath. I assume that the bundle contents itself also needs to be part of the bundle classpath, so we need to include it as well with a dot:
Note that @seh’s answer about slurping the JAR’s packages into your bundle with
Private-Packageis also correct (in that case the JAR would need to be visible on the build-time classpath). I would never useExport-Packagefor this though, because I think bundles should keep tight control over how much they export.