Thanks for the advice, Stuart. I am indeed seeing some weird effects, but I will experiment further and then collect my results and report.
Looking forward to seeing you at the next OSGi Users' Forum UK! B. -----Original Message----- From: Stuart McCulloch [mailto:[email protected]] Sent: 26 October 2011 13:17 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 15:09, Barbara Rosi-Schwartz wrote: > 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)? The best advice (imho) is to trust the default settings*, especially for the latest snapshot of the bundleplugin. Focus on getting the content of the bundle correct, and decide if you need to embed/inline any dependencies. (Inlining dependencies instead of embedding them can make it easier to test the bundle outside of OSGi.) I'm always surprised how few people ever look inside the final jar. Once the content is correct you can start checking the exports, adding versions as necessary. Then check the imports - the plugin now marks packages from optional Maven dependencies as optional in OSGi, which takes a lot of the previous burden away - but you should still consider adding version ranges. Finally look into using something like Pax-Exam to confirm that your bundle(s) will install into an OSGi framework. This is the basic approach I usually take - the OSGi in Action book goes into this process in more detail and has online examples: http://code.google.com/p/osgi-in-action/ - however note that it mainly uses bnd+ant, with maven configuration discussed in a short appendix. The general process is basically the same though, as both tools are configured with bnd instructions. [*] if you need to configure the bundleplugin with something already captured by Maven, please raise it as an issue - we want to minimise config where possible > 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. I can't make it to JAX, but I hope to be at the next meeting of the OSGi Users' Forum UK: http://uk.osgiusers.org/Main/MeetingsandEventsCalendar#nextmeet > 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] > --------------------------------------------------------------------- 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]

