You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.md 2.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. # Apache POI OSGi Bundle
  2. The POI bundle is an Uber jar which exports all the POI classes, XML Beans, OOXML Schemas and required dependencies. The current size is around 21 MB.
  3. The bundle is self-contained and can be used out of the box in a bare OSGi container.
  4. ## Embedded Dependencies
  5. The bundle embeds all the jars from lib/main:
  6. - SparseBitSet
  7. - curvesapi
  8. - commons-math3
  9. - commons-compress
  10. - commons-collections4
  11. - commons-codec
  12. - Log4j 2 API
  13. ## Optional Dependencies
  14. 1. Apache Batik
  15. Required to render WMF/EMF images. The OSGi bundle is provided by ServiceMix and available in Maven Central: https://mvnrepository.com/artifact/org.apache.servicemix.bundles/org.apache.servicemix.bundles.batik/1.14_1
  16. 2. Saxon
  17. Required if using as the XSLT and XQuery Processor engine in XML Beans.
  18. Available in Maven Central: https://mvnrepository.com/artifact/net.sf.saxon/saxon/8.9.0.4-osgi
  19. 3. Apache XML Security for Java, Bouncy Castle and XML Commons Resolver
  20. These are required to sign or validate signed Office documents. The OSGi bundles are available in Maven Central:
  21. - Apache XML Security for Java: https://mvnrepository.com/artifact/org.apache.santuario/xmlsec/2.2.1
  22. - XML Commons Resolver: https://mvnrepository.com/artifact/xml-resolver/xml-resolver/1.2-osgi
  23. - Bouncy Castle: https://mvnrepository.com/artifact/org.bouncycastle/bcprov-ext-jdk15on/1.68, https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk15on/1.68
  24. 4. PDFBox and PDFBox Graphics2D
  25. Required to render to PDF documents.
  26. The required jars can be downloaded from:
  27. - PDFBox:
  28. https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox
  29. https://mvnrepository.com/artifact/org.apache.pdfbox/fontbox
  30. - PDFBox Graphics2D:
  31. https://mvnrepository.com/artifact/de.rototor.pdfbox/graphics2d
  32. ## Blocked Imports
  33. The Bundle Maven Plugin performs a thorough inspection of the dependencies on external packages and by default includes them all in the <Import-Package> section.
  34. Transitive dependencies from XML Beans not required by POI:
  35. - !com.github.javaparser.*,
  36. - !org.apache.tools.ant.*
  37. Optional codecs pulled by Commons-Compress. Not used by POI
  38. - !com.github.luben.zstd.*,
  39. - !org.tukaani.xz.*,
  40. - !org.brotli.dec.*,
  41. Internal APIs which are no more in JPMS
  42. - !sun.misc.*
  43. ## Integration Testing
  44. The project tests the bundle using the Pax Exam framework which executes junit tests within an OSGi container started by Maven. The current version uses the Apache Felix driver but the framework should not matter, same tests will pass with the Karaf or Equinox drivers.
  45. When running integration tests Maven starts a bare Apache Felix OSGi container, deploys the POI bundle and runs a few simple tests to validate the code is working fine, e.g. create a spreadsheet, serialize it to a byte array and read back.