Thanks Stuart. Turns out I do not need to embed all transitive dependencies, which is a relief as I was concerned about my bundle blowing up out of all proportions.
I just managed without the transitive dependencies by a slow and careful balance of <dependency> elements in the pom and <Import-Package> / <Export-Package> clauses in the plug-in instructions. I must confess I do not really understand the configuration of the maven bundle plug-in, I have just accomplished this by trial and error. I would really love to start using the plug-in like a pro, any suggestion, Stuart, on what to read etc. (apart from the user guide)? Are you perhaps going to be at either the JAX London conference in a couple of weeks? I'd love to take a little of your time and ask you a few questions about it all. Thanks, B. -----Original Message----- From: Stuart McCulloch [mailto:[email protected]] Sent: 19 October 2011 13:35 To: [email protected] Subject: Re: Hot to configure Maven Bundle plug-in for a mixture of OSGi and non OSGi dependencies On 19 Oct 2011, at 09:15, Barbara Rosi-Schwartz wrote: > Good morning, I am back!... ;-) > > I am trying out Neil's large bundle option as an interim solution. I > am using the > > <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency> > > Instruction. When I deploy my fat bundle, it falls over with a > transitive dependency used in one of the embedded jars not being found > (log4j, of all classes). To fix that, I decided to try and add the > instruction > > <Embed-Transitive>true</Embed-Transitive> > > However maven does not seem to like this as it fails to complete its job with > error: > > Class in different directory than declared. Path from class name is > com/sun/codemodel/CodeWriter.class but the path in the jar is > 1.0/com/sun/codemodel/CodeWriter.class from Jar:jaxb-xjc-2.1.10.jar > > Which I thought was fixed a while back. > > Any idea anyone? Seems to be a packaging problem in the original jaxb-xjc-2.1.10 artifact ... the 2.1.10.1 version doesn't contain these spurious "1.0..." entries Try upgrading to: <dependency> <groupId>org.jvnet.jaxb2_commons</groupId> <artifactId>jaxb-xjc</artifactId> <version>2.1.10.1</version> </dependency> (assuming you're talking about this particular jaxb-xjc artifact) > TIA, > B. > > -----Original Message----- > From: Neil Bartlett [mailto:[email protected]] > Sent: 17 October 2011 14:26 > To: [email protected] > Subject: Re: Hot to configure Maven Bundle plug-in for a mixture of > OSGi and non OSGi dependencies > > Hi Barbara, > > I feel ambivalent about it ;-) > > It's clearly not ideal, but as part of a migration it's acceptable. Same with > embedding dependencies... both result in a fatter system than required. > > Rgds, > Neil > > > > On Monday, 17 October 2011 at 14:21, Barbara Rosi-Schwartz wrote: > >> Neil, >> >> what I was trying to do, was not to treat the company jars as "third party" >> ones. Since I have access to the projects and their pom files, I was trying >> to get at least the jars my project depends on to be more or less proper >> OSGi bundles, at the same time hiding all of their internal dependencies my >> project does not care about. >> >> Having said that, I can see that this implies potentially several copies of >> the same libraries, which is not ideal. How do you feel about using a large >> "3rd party" bundle when what one wants to achieve is modularity and >> download/use of only those bundles and libs that are needed for a given user >> invoked task? Still better than having several copies of the same libs? >> >> Thanks, >> B. >> >> -----Original Message----- >> From: Neil Bartlett [mailto:[email protected]] >> Sent: 17 October 2011 14:11 >> To: [email protected] (mailto:[email protected]) >> Subject: Re: Hot to configure Maven Bundle plug-in for a mixture of >> OSGi and non OSGi dependencies >> >> I appreciate that OSGifying a large set of legacy JARs is a significant task. >> >> One approach you can use as a stepping stone is to create a single, large >> "3rd party" bundle. This would contain basically all of the libraries you >> require, referenced via Bundle-Classpath, and export the packages that you >> need from your own bundles. >> >> The advantage of this versus embedding is that you only have one copy of >> each library, and also that your main bundles are in pretty much the state >> you want them to be in, using Import-Package etc. You can then gradually >> dissolve the 3rd party bundle by removing a single library from its >> Bundle-Classpath and OSGifying it in isolation, without needing to refactor >> your own bundles. >> >> Regards >> Neil >> >> >> >> On Monday, 17 October 2011 at 13:44, Barbara Rosi-Schwartz wrote: >> >>> Thanks Neil. >>> >>> I did try what you suggest, but I got so many bees in my bonnet... :-( I >>> was on the path of OSGi-fying the whole organisation here, a lot more than >>> I had anticipated... eventually I gave that up in frustration. >>> >>> -----Original Message----- >>> From: Neil Bartlett [mailto:[email protected]] >>> Sent: 17 October 2011 12:11 >>> To: [email protected] (mailto:[email protected]) >>> Subject: Re: Hot to configure Maven Bundle plug-in for a mixture of >>> OSGi and non OSGi dependencies >>> >>> Barbara, >>> >>> Why not OSGi-fy those third party dependencies and save the results in a >>> repository? You only have to do this once (per dependency) and it avoids >>> all the issues with embedding libraries. >>> >>> Rgds >>> Neil >>> >>> >>> >>> On Monday, 17 October 2011 at 11:51, Pierre Henry Perret wrote: >>> >>>> Hi Rosi, >>>> >>>> It recalls me some similar case I had in a project... >>>> >>>> I would had the *baz *dependance in the *parent *management section >>>> so that it is inherited from all *modules.* >>>> * >>>> * >>>> *WDYT ? >>>> * >>>> -- >>>> Pierre-Henry Perret >>>> mob2: +33 (0)6 69 52 18 48 >>>> >>>> >>>> >>>> >>>> 2011/10/17 Barbara Rosi-Schwartz >>>> <[email protected] >>>> (mailto:[email protected]) >>>> (mailto:[email protected]) >>>> (mailto:[email protected])> >>>> >>>>> Hello. >>>>> >>>>> I am using the Maven Bundle plug-in to OSGi-ify dependencies that >>>>> we have on another team's jars. These jars in turn have their own >>>>> dependencies, some of which I have already OSGi-ified, whereas >>>>> others are third parties ones which I would just like to embed in the >>>>> generated bundles. >>>>> >>>>> Let's assume that the jar I want to OSGi-ify is artefact foo-bar >>>>> and that it contains a bunch of third party dependencies + a >>>>> dependency on artefact foo-baz, which I have already OSGi-ified. >>>>> >>>>> To this aim I configure my Maven Bundle plug-in as follows: >>>>> >>>>> <configuration> >>>>> <instructions> >>>>> <Export-Package>com.foo.bar.*</Export-Package> >>>>> <Bundle-Version>${parent.version}</Bundle-Version> >>>>> <Import-Package>com.foo.baz.client</Import-Package> >>>>> <Embed-Dependency>!foo-baz,*;scope=compile|runtime</Embed-Depend >>>>> en >>>>> cy >>>>> </instructions> >>>>> </configuration> >>>>> >>>>> The generated com.foo.bar's MANIFEST.MF does contain the expected >>>>> Import-Package clause, but it also contains foo-baz.jar in the >>>>> Bundle-ClassPath clause, which is not what I want. I have tried >>>>> several permutation of the <Embed-Dependency> specification, but to no >>>>> avail. >>>>> >>>>> How do I correctly specify the instructions to achieve my goal? >>>>> >>>>> TIA, >>>>> B. >>>>> >>>>> BARBARA ROSI-SCHWARTZ >>>>> Senior Developer >>>>> >>>>> IG Group|Cannon Bridge House >>>>> 25 Dowgate Hill|London|EC4R ZYA >>>>> >>>>> t: +44(0)20 7573 0208 (Direct) >>>>> t: +44(0)20 7896 0011 (Switchboard) >>>>> w: www.iggroup.com (http://www.iggroup.com) >>>>> >>>>> >>>>> ________________________________ The information contained in this >>>>> email is strictly confidential and for the use of the addressee >>>>> only, unless otherwise indicated. >>>>> If you are not the intended recipient, please do not read, copy, >>>>> use or disclose to others this message or any attachment. Please >>>>> also notify the sender by replying to this email or by telephone >>>>> (+44 (0)20 7896 0011) and then delete the email and any copies of it. >>>>> Opinions, conclusions (etc) that do not relate to the official >>>>> business of this company shall be understood as neither given nor >>>>> endorsed by it. IG Group Holdings plc is a company registered in England >>>>> and Wales under number 01190902. VAT registration number 761 2978 07. >>>>> Registered Office: Cannon Bridge House, 25 Dowgate Hill, London EC4R 2YA. >>>>> Authorised and regulated by the Financial Services Authority. >>>>> FSA Register number 114059. >>> >>> >>> The information contained in this email is strictly confidential and for >>> the use of the addressee only, unless otherwise indicated. If you are not >>> the intended recipient, please do not read, copy, use or disclose to others >>> this message or any attachment. Please also notify the sender by replying >>> to this email or by telephone (+44 (0)20 7896 0011) and then delete the >>> email and any copies of it. Opinions, conclusions (etc) that do not relate >>> to the official business of this company shall be understood as neither >>> given nor endorsed by it. IG Group Holdings plc is a company registered in >>> England and Wales under number 01190902. VAT registration number 761 2978 >>> 07. Registered Office: Cannon Bridge House, 25 Dowgate Hill, London EC4R >>> 2YA. Authorised and regulated by the Financial Services Authority. FSA >>> Register number 114059. > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

