Tworzenie pakunku OSGi z biblioteki Apache POI

Jedną z niedogodności korzystania z OSGi jest brak gotowych pakunków dla znacznej cześć popularnych wydawałoby się bibliotek. Jednym takich niefortunnych przypadków jest Apache POI – poszukiwania na SpringSource Enterprise Bundle Repository i Orbit w celu znalezienia pakunku dla wersji nowszej niż 3.0 nie przynoszą skutku.

Szczęśliwie w porównaniu np. do zabiegów potrzebnych do uruchomienia w kontenerze OSGi  Hibernate’a, Batika’a, JAXB czy niektórych bibliotek wykorzystujących Java SPI stworzenia pakunku jest w tym przypadku bardzo proste, szczególnie jeśli wykorzystamy Bnd.

Wystarczy pobrać paczkę dystrybucyjną w interesującej nas wersji (w moim przypadku 3.7) i rozpakować. Następnie tworzymy plik poi.bnd z opisem konwersji. W przypadku wersji 3.7 wygląda on tak

	
-classpath: poi-3.7-20101029.jar, 
  poi-ooxml-3.7-20101029.jar,
  poi-ooxml-schemas-3.7-20101029.jar, 
  poi-scratchpad-3.7-20101029.jar
Bundle-Name: Apache POI
Bundle-SymbolicName: org.apache.poi
Bundle-Version: 3.7.0
Bundle-ClassPath: .
Built-By: jarek.przygodzki@gmail.com
Private-Package: *
Export-Package: org.apache.poi.*;-split-package:=merge-first
Import-Package: !org.openxmlformats.schemas*, \
  !schemasMicrosoftComOfficePowerpoint*, \
  !schemasMicrosoftComOfficeWord*, \
  junit*;resolution:=optional, \
  org.apache.commons.logging;resolution:=optional, \
  *
Include-Resource: @poi-3.7-20101029.jar, \
  @poi-ooxml-3.7-20101029.jar, \
  @poi-ooxml-schemas-3.7-20101029.jar, \
  @poi-scratchpad-3.7-20101029.jar

Potem wystarczy już tylko uruchomić bnd

java -jar \apps\biz.aQute.bnd.jar poi.bnd

i po chwili możemy cieszyć się gotowym pakunkiem org.apache.poi

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s