Carsten Ziegeler wrote:
Upayavira wrote:
Can someone explain how maven/OSGi would play together? OSGi has the
ability to download and install packages. It doesn't though have any
dependency resolution stuff in it. Does Maven provide that? However,
IIUC, Maven is a build-time tool, and any dependency resolution we use
should be usable at runtime (even if that isn't always the best time to
do it). Could Maven handle this usecase too?
As you said Maven is a build-time tool, so we should use it for that
case. afaiu OSGi will do all the run-time stuff for us.
Well, no, it doesn't. OSGi by default doesn't do any dependency
resolution. Either by package, or by 'block'. In which case, if we use
Maven for it at build time, we're still stuck with a need for it at
deploy time, which seems a little odd.
But we need something that can compile our java code. In Maven you
simply define on which other projects/jars you depend and maven does the
downloading/resolution stuff and then compiles your code.
Building when you depend on java code in other bundles isn't that easy.
For one, you may depend upon java classes which are in a jar embedded
within another jar. Java/ant can't handle that. Secondly, the bundle you
are depending upon might only export some of its classes. Ant can't
specify only certain classes in its classpath (I dunno if Maven can
handle this). So, the only solution we were able to come up with was to
explode the dependency bundle's jar, only extracting the exported
classes/interfaces.
This seems to me to be an OSGi specific problem, which, to my mind,
would be best sorted in an OSGi context.
And we need a tool that creates a bundle out of the source tree
(creating a jar, building the manifest, stuffing all resources into it
etc.). There will be a Maven plugin for this, I think, so we could
simply use it.
Well, once you've exploded your dependencies, building a bundle should
be pretty trivial, shouldn't it?
But I agree that there are some more questions, so I think we should
simply experiment a little bit with one block, like Bertrand suggested,
and see what the outcome is.
Yup, definitely.
Upayavira