Wie verwende ich Apache POI in OSGi?
Ich möchte Apache-POI in OSGi verwenden, um eine Excel-Arbeitsmappe mit der Streaming-OOXML-API (SXSSF) zu schreiben. Die Streaming-API ist ab POI 3.9 verfügbar.
Wie die neuesten Apache POI 3.11-Gläser keine Bundles sind: Was ist der beste Weg, um POI in OSGi zum Laufen zu bringen?
ch habe zwei Ansätze ausprobier
embed die Gläser direkt im einzigen Bundle, das sie verwenden wird POI-Gläser als Bündel vorverpackt verwendenIch bin verzweifelt daran, alle Abhängigkeiten zusammenzubringen.
Zuerst über das Einbetten des POI-Glases in mein Bundle: Meine bndtools-Datei enthält
-buildpath: \
...
libs/dom4j-1.6.1.jar;version=file,\
libs/poi-3.11.jar;version=file,\
libs/poi-ooxml-3.11.jar;version=file,\
libs/poi-ooxml-schemas-3.11.jar;version=file
Private-Package: \
...
org.openxmlformats.schemas.*,\
org.apache.poi.*,\
org.dom4j.*,\
com.microsoft.schemas.office.x2006.*,\
schemaorg_apache_xmlbeans.*,\
schemasMicrosoftComOfficeExcel.*,\
schemasMicrosoftComOfficeOffice.*,\
schemasMicrosoftComVml.*
Dies ergibt ein Bündel, das viele, viele Dinge importiert, wie zum Beispielorg.bouncycastle.asn1.x509
undorg.junit
. Ich habe nicht vor, meine Anwendung zu verschlüsseln oder zu testen - daher sind diese beiden Optionen wahrscheinlich "optional". Wie kann ich das spezifizieren? Gibt es eine gute Möglichkeit, all diese Abhängigkeiten zu sammeln?
Hinweis: mindestensorg.apache.commons.codec
undcom.sun.msv.datatype.xsd.lib
werden zusätzlich benötigt, sind aber bereits Bundles.
it vorverpackten Gläsern habe ich versucht,org.apache.servicemix.bundles.poi
3.9_2. Dies erfordert auchdom4j
so habe ich die vorgewickeltenorg.apache.servicemix.bundles.dom4j
aber dafür ist mindestens Version 1.0 von @ erforderlijavax.xml.stream
was mein JVM / Felix OSGi als "nur" Version ankündigt0.0.0.1_007_JavaSE
. Ich habe das von Hand behoben (hässlich), bin dann aber auf eine andere Abhängigkeit angewiesen.
Was ist der gute Weg?