felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rajini Sivaram" <rajinisiva...@googlemail.com>
Subject Re: maven-bundle-plugin : bundleall
Date Mon, 12 Nov 2007 17:27:13 GMT
Stuart/Richard,

Thank you for both your replies. I am using bindex at the moment, but I
prefer a maven plugin so that it can be easily used in the Tuscany build. I
will try out Pax-Construct.


Thank you...

Regards,

Rajini


On 11/12/07, Richard S. Hall <heavy@ungoverned.org> wrote:
>
> Also, if you have a bunch of JAR files, you can use bindex from Peter
> Kriens to generate an OBR repository.
>
> -> richard
>
> Stuart McCulloch wrote:
> > On 12/11/2007, Rajini Sivaram <rajinisivaram@googlemail.com> wrote:
> >
> >> Hello,
> >>
> >> I am trying to generate OSGi bundles corresponding to a Apache Tuscany
> >> distribution to run Tuscany under OSGi. Tuscany uses around 170 third
> >> party
> >> libraries, and since I dont want to write 170 pom.xmls to convert each
> of
> >> those into a bundle, the 'bundleall' goal provided by
> maven-bundle-plugin
> >> looks like a very promising alternative. I have a couple of questions
> >> related to 'bundleall' (I am using maven-bundle-plugin version
> >> 1.1.0-SNAPSHOT).
> >>
> >>    1. Is it possible to get all the jars wrapped by bundleall to be
> added
> >>    to an OBR repository? I tried
> >> <obrRepository>myrepository.xml</obrRepository>,
> >>    but the resulting repository file does not contain entries for the
> >>    dependencies.
> >>
> >
> >
> > not at the moment - the bundleall goal simply creates a series of
> bundles
> > under the target directory
> > which aren't managed by maven (as they have no pom) and therefore don't
> get
> > installed in the local
> > maven repository or the OBR repository metadata
> >
> > it should be possible to attach the bundle files to the project
> dynamically,
> > so they could be installed
> > - you'd need to raise this as a new bundleplugin feature (
> > https://issues.apache.org/jira/browse/FELIX)
> >
> > however, please note that bundleall takes a mechanical approach to
> bundling
> > (export all contents)
> > which while ok for plain libraries is not enough for libraries that have
> > specific resource management
> > or thread life-cycles. For example a library may start a background
> thread
> > for certain API calls which
> > would need to be cleaned up when the bundle stopped, otherwise you
> wouldn't
> > be able to uninstall
> > or upgrade properly.
> >
> > for certain libraries (hopefully only a few of the 170!) you'd need to
> have
> > a Maven POM so you can
> > customize the manifest and maybe add a Bundle-Activator to manage
> > resource/thread life-cycles.
> >
> > btw, you might want to consider tools that build on and use the
> > bundleplugin, such as Pax-Construct:
> >
> >    http://www.ops4j.org/projects/pax/construct/index.html
> >
> > for example:
> >
> >    pax-wrap-jar -g commons-logging -a commons-logging -v 1.1
> >
> > would create a new POM to wrap the commons-logging library as a single
> > bundle containing just the
> > commons logging code (note the -g groupId option can be omitted as it's
> the
> > same as the artifactId)
> >
> > and:
> >
> >    pax-wrap-jar -a commons-logging -v 1.1 -- -DembedTransitive
> >
> > would also wrap commons-logging, but include the contents of its
> > dependencies in the same bundle.
> >
> > if you wanted each dependency as a separate bundle (with its own POM)
> you
> > would use:
> >
> >    pax-wrap-jar -a commons-logging -v 1.1 -- -DwrapTransitive
> >
> > (note - this also converts the old dependencies to be bundle
> dependencies in
> > the wrapper POM)
> > and if you wanted to mark any javax package and certain Sun packages as
> > optional, you'd use:
> >
> >    pax-wrap-jar -a commons-logging -v 1.1 -- -DwrapTransitive
> >       "-DimportPackage=javax.*|com.sun.jdmk.comm;resolution:=optional,*"
> >
> > the benefit of Pax-Construct (especially if created inside a project
> > generated from pax-create-project)
> > is that you can customize and manage the POMs over time, create Eclipse
> > project files, and do all the
> > things you'd do with a normal Maven project.
> >
> > see the site for all wrapping options - there are also commands to help
> > embed libraries inside bundles
> >
> >    2. Is it possible to specify that I want to wrap only the highest
> >
> >>    version of the jars (whichever version maven normally resolves to)?
> >> Many of
> >>    the 3rd party libraries used by Tuscany have dependencies on other
> 3rd
> >> party
> >>    libraries. When I run "bundleall", all of the versions of these
> >> dependencies
> >>    get wrapped. Since Tuscany is normally run outside of OSGi, the
> Tuscany
> >>    distribution uses maven to obtain a single version of each of the
> third
> >>    party libraries. I would to like to insert an OSGi manifest into
> this
> >> single
> >>    version, so that Tuscany can be optionally run inside OSGi.
> >>
> >
> >
> > this is possible with pax-wrap-jar - when using -DwrapTransitive it
> should
> > only wrap one version of a jar
> >
> > I believe it would be possible to add an option to bundleall that does
> > something similar - you'd need
> > to raise this as another feature request on JIRA (just so we can track
> it
> > separately from the first issue)
> >
> > Thank you...
> >
> >
> > np - hope this helps
> >
> > Regards,
> >
> >> Rajini
> >>
> >>
> >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message