I've never had to get this working myself, so my understanding may be a bit
off here. It strikes me that, at build time, there are two directions of
translation:
1. MANIFEST.MF to ivy.xml: where you want to consume OSGi bundles as if they
were an Ivy repo
2. ivy.xml to MANIFEST.MF: when you want to generate a MANIFEST.MF

I don't fully comprehend the use case for #1 myself. But for that you might
want to look at a project called bushel:
http://code.google.com/p/bushel/
And here's a wiki page:
http://code.google.com/p/bushel/wiki/HowToUseIvyWithYourOsgiProject

#2 is a more open-ended question. I know it's easy enough to generate a
manifest Class-Path entry using the manifestclasspath Ant task and an
Ivy-derived classpath. And I'm sure there's a way for manifest-generating
tools like bundlor and bnd to take inputs that are derived from Ivy.

And it seems like when it comes to generating the Export-Package content,
you should be able to stick a placeholder like ${ivy.revision} alongside
each package declaration and fill in the current version during the build.

Now, when it comes to the Import-Package entry, the question arises as to
what version you want to fill in alongside each package, where you do fill
in a version. You could get the version from the Ivy dependencies simply to
keep your manifest versions from getting out of sync with your ivy.xml, but
you'd need some translation mechanism. And even then, isn't one key element
of OSGi to allow your runtime dependencies to be more flexible than your
build-time dependencies? So you'd be losing something by deciding on one
version at build-time.

No matter how much you automate and how much you're able to leverage Ivy and
a tool like bundlor or bnd, it still seems like you're going to have to do a
certain amount of manual composition of a MANIFEST.MF.

And you can see how easy it is for Ivy versioning and bundle versioning to
get out of sync with each other. I don't know if this has been fixed with
Ivy 2.2.0, but if you look at the MANIFEST.MF for the 2.1.0 Ivy JAR itself,
you'll find references to Ivy 2.0.0 under Export-Package:
Export-Package: org.apache.ivy;version="2.0.0"

Maybe the key question is, what does your team hope to accomplish with OSGi?
The answer could determine how much of a mismatch there is between the two
paradigms, OSGi/runtime and Ivy/build-time.

Anyway, you can see I'm half answering you and half asking this question in
my own right. I have a need to obtain a Java application's dependencies at
runtime so that they don't have to be distributed with the application,
otherwise every time the dependencies change, you need a new application.
I'm not quite sure what the "right" solution is to this problem.

On Tue, Jul 20, 2010 at 10:53 AM, Shawn Castrianni <
shawn.castria...@halliburton.com> wrote:

> Has anybody researched the relationship between OSGI and IVY?  I have a
> large build system running on IVY and is working great.  However,
> development wants to move towards an OSGI runtime framework which impacts
> how the modules are built.  I am trying to figure out how I can merge in
> OSGI bundle creation with my IVY based build system.
>
> I am finding that the dependency mechanism and publish mechanism in OSGI is
> fighting with the same concepts in IVY.  Therefore, I am not making any
> progress on this OSGI project.
>
> Has anybody spent any time researching OSGI and have any thoughts on it in
> relation to IVY?
>
> ---
> Shawn Castrianni
>
> ----------------------------------------------------------------------
> This e-mail, including any attached files, may contain confidential and
> privileged information for the sole use of the intended recipient.  Any
> review, use, distribution, or disclosure by others is strictly prohibited.
>  If you are not the intended recipient (or authorized to receive information
> for the intended recipient), please contact the sender by reply e-mail and
> delete all copies of this message.
>

Reply via email to