Cómo usar Apache POI en OSGi

Quiero usar Apache POI en OSGi para escribir un libro de Excel con la transmisión, API OOXML (SXSSF). La API de transmisión está disponible desde POI 3.9.

Como los últimos tarros Apache POI 3.11 no son paquetes:¿Cuál es la mejor manera de hacer que POI funcione en OSGi?

Intenté dos enfoques:

incrusta los frascos directamente en el único paquete que los usaráuse frascos de PDI preenvasados como paquetes

Estoy desesperado por reunir todas las dependencias.

Primero acerca de incrustar el jar POI en mi paquete: mi archivo bndtools contiene

-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.*

Esto da como resultado un paquete que importa muchas, muchas cosas como por ejemploorg.bouncycastle.asn1.x509 yorg.junit. No planeo encriptar o probar en mi aplicación, por lo que estos dos son probablemente "opcionales". ¿Cómo puedo especificar esto? ¿Hay una buena manera de recopilar todas estas dependencias?

Nota: al menosorg.apache.commons.codec ycom.sun.msv.datatype.xsd.lib se requieren adicionalmente, pero ya son paquetes.

Usando frascos preenvasados, intenté usarorg.apache.servicemix.bundles.poi 3.9_2. Esto también requieredom4j así que usé el preenvueltoorg.apache.servicemix.bundles.dom4j pero eso requiere al menos la versión 1.0 dejavax.xml.stream que mi JVM / Felix OSGi anuncia como versión "única"0.0.0.1_007_JavaSE. Lo arreglé a mano (feo), pero luego me quedé atascado en otra dependencia.

¿Cuál es el buen camino?

Respuestas a la pregunta(2)

Su respuesta a la pregunta