Mark,

Thanks for the info. Just looked up <Embed-Dependency> in the documentation
and it does what I've done manually with Bundle-ClassPath, which is a bit
what I was trying to avoid. At least if it's the way to go, using this
instruction, I could still automate the process like I wanted.

Alain


On Wed, Jan 2, 2019 at 5:40 AM Mark Hoffmann via osgi-dev <
osgi-dev@mail.osgi.org> wrote:

> Hi Alain,
>
> I know that Lucene itself contains split-packages in lucene-core.jar and
> lucene-analyzer-common.jar. The split-package there is e.g.
> org.apache.lucene.analysis.standard. When OSGi-fying them, we put the two
> jars into one OSGi bundle.
>
> Currently we use bnd, to do that. In former times we used the
> maven-bundle-plugin with this instruction e.g.
>
>
> <Embed-Dependency>lucene-analyzers-common;inline=true,lucene-core;inline=true</Embed-Dependency>
>
> You also have to take care about all external dependencies of e.g. lucene
> analyzers or spatial, like morfologic, uima, spatial4j, jakarta-regexp. You
> may need to OSGi-fy these dependencies and their transient dependencies
> too.
>
> After OSGi-fying the jars, we executed an additional build step to create
> the p2 update site using maven-tycho. In addition to the OSGi-fied jars
> there are other transient dependencies. For Lucene we identified:
>
>         <dependency>
>             <groupId>com.ibm.icu</groupId>
>             <artifactId>icu4j</artifactId>
>         </dependency>
>         <dependency>
>             <groupId>org.ow2.asm</groupId>
>             <artifactId>asm</artifactId>
>         </dependency>
>         <dependency>
>             <groupId>org.ow2.asm</groupId>
>             <artifactId>asm-commons</artifactId>
>         </dependency>
>         <dependency>
>             <groupId>org.antlr</groupId>
>             <artifactId>antlr4-runtime</artifactId>
>         </dependency>
>         <dependency>
>             <groupId>commons-codec</groupId>
>             <artifactId>commons-codec</artifactId>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.commons</groupId>
>             <artifactId>commons-compress</artifactId>
>         </dependency>
>
> We took these bundles from the standard Eclipse repository or the Eclipse
> Orbit update site.
>
> This belongs only to the Lucene stuff. Maybe you have to do the same work
> for the ES stuff. We never used require-bundle, it worked well out of the
> box with package ex- and imports. Using a mega-lucene bundle with all
> dependencies, was our first approach ad worked well too. But don't forget,
> to put the Java service files as well in the bundles, because Lucene uses
> the service loader.
>
> I hope this helps.
>
> Mark
> Am 31.12.18 um 12:19 schrieb Alain Picard via osgi-dev:
>
> I am trying to convert a bundle of ours that now simply imports jars for
> Elasticsearch and make it a p2 site with p2-maven-plugin that usesthe
> maven-bundle-plugin/bnd to wrap non-OSGi jars.
>
> I ended up with resolution errors since ES has about 7-8 split packages,
> most notably org.elasticsearch.client and org.elasticsearch.common. So I
> went searching for solutions that I've seen before but never had to use
> them. I cam across
> https://eclipsesource.com/blogs/2008/08/22/tip-split-packages-and-visibility/
> from Chris and http://web.ist.utl.pt/ist162500/?p=65.
>
> I first tried to simply create a "bridge" bundle that simply requires the
> ES bundles and re-export them and import the bridge bundle from my "search
> bundle". That didn't solve the problem, same issue with imports of
> split-packages.
>
> Next I added attribute and mandatory, even if here I was relying on
> require-bundle (not what I normally do). In my bridge bundle I added all
> the over 300 export-package for the 5 ES bundles, w/o any extra. This
> resulted in an error for each export of the form: Package
> 'org.elasticsearch.action.admin.cluster.allocation' does not exist in this
> plug-in. In the search bundle, with a require bundle of the bridge bundle,
> w/o the export packages it would not resolve any ES package and with them
> in (even with the error) the only issues were with the split package. I
> also tried in the search bundle to instead import the packages, with the
> same result.
>
> I'm getting to the point where I feel I might just have to either go back
> to the original approach or create a bundle that just handles the ES
> dependencies with bundle-classpath and export-pacakges of all those.
>
> Any idea where I'm going wrong?
>
> Thanks
> Alain
>
>
> _______________________________________________
> OSGi Developer Mail 
> listosgi-...@mail.osgi.orghttps://mail.osgi.org/mailman/listinfo/osgi-dev
>
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to