Как использовать Apache POI в OSGi
Я хочу использовать Apache POI в OSGi для написания рабочей книги Excel с потоковым API OOXML (SXSSF). API потоковой передачи доступен с POI 3.9.
Поскольку последние фляги Apache POI 3.11 не являются связками:Какой лучший способ заставить работать POI в OSGi?
Я попробовал два подхода:
вставлять банки непосредственно в единственную связку, которая будет их использоватьиспользовать баночки POI, предварительно упакованные в пакетыЯ в отчаянии собираю все зависимости.
Сначала о встраивании фляги POI в мой пакет: мой файл bndtools содержит
-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.*
Это приводит к пакету, который импортирует много, много вещей, как, например,org.bouncycastle.asn1.x509
а такжеorg.junit
, Я не планирую шифровать или тестировать в своем приложении - так что эти два, вероятно, как-то «необязательны». Как я могу указать это? Есть ли хороший способ собрать все эти зависимости?
Примечание: по крайней мереorg.apache.commons.codec
а такжеcom.sun.msv.datatype.xsd.lib
дополнительно требуются, но они уже являются связками.
Используя предварительно упакованные банки, я попытался использоватьorg.apache.servicemix.bundles.poi
3.9_2. Это также требуетdom4j
поэтому я использовал предварительно обернутыйorg.apache.servicemix.bundles.dom4j
но для этого требуется как минимум версия 1.0javax.xml.stream
которую моя JVM / Felix OSGi объявляет как «единственную» версию0.0.0.1_007_JavaSE
, Я исправил это вручную (безобразно), но затем застрял на другой зависимости.
Какой хороший способ?