I'm about to start working on an application that I'd like to run in an OSGi container, like Virgo. Virgo's core platform supplies many of the dependencies I'm interested in, like the Spring Framework, but I'd also like to use Spring Integration. Spring Integration's jars are ready-to-go OSGi bundles, and are available to me along with many other third-party dependencies in an Ivy repository.
To tell the OSGi container that my bundle depends on, say, Spring Integration, I need to add relevant packages or bundles to my Manifest -- I know how to do this and understand how that works.
What I'd like to understand is how to develop against, resolve, build and eventually deploy third-party bundles available in some kind of repository (preferably Ivy). In the past I've accomplished this in two ways:
- Add the dependencies to the target platform, or in this case, the Virgo ext repository
- Keep a copy of the dependency in my workspace, export it as part of the build
Neither of these solutions seem scalable or especially elegant.
I'm interested in using Virgo 3.0.0 or Equinox and my development environment is Eclipse, if a different OSGi container or development environment will make my life easier, I'm happy to switch.
To make this crystal clear, I'd like to know:
- How do I develop against OSGi bundles in an external repository (e.g. the bundles live in Ivy)?
- How do I build and deploy my bundle along with its required external dependencies?