On 17 Oct 2011, at 13:59, Barbara Rosi-Schwartz wrote: > BTW, I looked into the various items of documentation on the web and could > not find any explanation for the Embed-Dependency instruction that explains > what you, Stuart, have explained below. Examples also do not show cases like > that.
the current embedding examples are shown below, but they don't cover the negative clause case: http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html#ApacheFelixMavenBundlePlugin%28BND%29-Embeddingdependencies the issue wrt. negative clauses is a flaw in the current implementation, which is why it wasn't documented ;) > It would probably be worth augmenting the docs with that information. > > Thanks! > B. > > -----Original Message----- > From: Stuart McCulloch [mailto:[email protected]] > Sent: 17 October 2011 12:55 > To: [email protected] > Subject: Re: Hot to configure Maven Bundle plug-in for a mixture of OSGi and > non OSGi dependencies > > On 17 Oct 2011, at 10:03, Barbara Rosi-Schwartz wrote: > >> 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-Dependency> >> </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? > > Hi B, > > At the moment the Embed-Dependency clauses are processed independently when > they're mapped to bnd instructions (Include-Resource and Bundle-ClassPath). > > So "!foo-baz, *;scope=compile|runtime" is actually processed as: > > !foo-baz --> embed any dependency > whose artifactId is not foo-bar > > *;scope=compile|runtime --> embed any compile/runtime scope > dependency > > Unfortunately this is different to how bnd processes negative Import-Package > clauses, which I agree is confusing - if you raise an issue for this at > https://issues.apache.org/jira/browse/FELIX/component/12311143 I'll look into > fixing this. Note that if you just use positive clauses then you won't > encounter this problem. > > Meanwhile, as a workaround you can use: > > <Embed-Dependency>!foo-baz;scope=compile|runtime</Embed-Dependency> > > which because it's one clause will achieve the desired result. > > You can't easily extend this to exclude more than one artifactId, but in that > case you could perhaps deploy your OSGi and non-OSGi artifacts under > different groups and use the groupId to selectively embed only non-OSGi > artifacts: > > <Embed-Dependency>groupId=!foo-osgi;scope=compile|runtime</Embed-Dependency> > > Or as Neil suggested, you could look into converting those dependencies into > individual OSGi bundles. > > -- > Cheers, Stuart > >> 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 >> >> >> ________________________________ >> 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]

