diff --git a/README.md b/README.md index 882a07e..2fa1e1d 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,13 @@ -# Quarkus extension for Apache POI - -[![All Contributors](https://img.shields.io/badge/all_contributors-6-orange.svg?style=flat-square)](#contributors-) - +
+ + +# Quarkus POI +
+
[![Version](https://img.shields.io/maven-central/v/io.quarkiverse.poi/quarkus-poi?logo=apache-maven&style=flat-square)](https://search.maven.org/artifact/io.quarkiverse.poi/quarkus-poi) +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=flat-square)](https://opensource.org/licenses/Apache-2.0) +[![Build](https://github.com/quarkiverse/quarkus-poi/actions/workflows/build.yml/badge.svg)](https://github.com/quarkiverse/quarkus-poi/actions/workflows/build.yml) This is a Quarkus extension for Apache POI. @@ -92,4 +96,4 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d -This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! \ No newline at end of file diff --git a/deployment/src/main/java/io/quarkiverse/poi/deployment/POIProcessor.java b/deployment/src/main/java/io/quarkiverse/poi/deployment/POIProcessor.java index 9ccc713..eaa88a6 100644 --- a/deployment/src/main/java/io/quarkiverse/poi/deployment/POIProcessor.java +++ b/deployment/src/main/java/io/quarkiverse/poi/deployment/POIProcessor.java @@ -1,11 +1,14 @@ package io.quarkiverse.poi.deployment; +import java.util.List; + import org.apache.xmlbeans.StringEnumAbstractBase; import org.apache.xmlbeans.XmlObject; import org.jboss.jandex.ClassInfo; import org.jboss.jandex.IndexView; import io.quarkiverse.poi.runtime.graal.POIFeature; +import io.quarkus.deployment.IsNormal; import io.quarkus.deployment.annotations.BuildProducer; import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.builditem.CombinedIndexBuildItem; @@ -16,6 +19,7 @@ import io.quarkus.deployment.builditem.SystemPropertyBuildItem; import io.quarkus.deployment.builditem.nativeimage.NativeImageResourcePatternsBuildItem; import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; +import io.quarkus.deployment.pkg.builditem.UberJarMergedResourceBuildItem; class POIProcessor { @@ -75,4 +79,26 @@ public NativeImageResourcePatternsBuildItem registerResources() { "org/apache/poi/ss/formula/function/.*\\.txt", "org/apache/poi/schemas/ooxml/.*\\.xsb").build(); } + + /** + * Produces `UberJarMergedResourceBuildItem`s for each specified service file to be included in the Uber JAR. + *

+ * This build step is only executed in "normal" mode and registers each of the listed services in + * the `META-INF/services` directory. + * + * @param producer The build item producer for creating `UberJarMergedResourceBuildItem` instances. + */ + @BuildStep(onlyIf = IsNormal.class) + void uberJarServiceLoaders(BuildProducer producer) { + List serviceFiles = List.of( + "org.apache.poi.extractor.ExtractorProvider", + "org.apache.poi.sl.draw.ImageRenderer", + "org.apache.poi.sl.usermodel.MetroShapeProvider", + "org.apache.poi.sl.usermodel.SlideShowProvider", + "org.apache.poi.ss.usermodel.WorkbookProvider"); + + for (String serviceFile : serviceFiles) { + producer.produce(new UberJarMergedResourceBuildItem("META-INF/services/" + serviceFile)); + } + } } diff --git a/deployment/src/main/resources/dev-ui/qwc-poi-card.js b/deployment/src/main/resources/dev-ui/qwc-poi-card.js index 5128849..0c183dc 100644 --- a/deployment/src/main/resources/dev-ui/qwc-poi-card.js +++ b/deployment/src/main/resources/dev-ui/qwc-poi-card.js @@ -55,7 +55,7 @@ export class QwcPoiCard extends LitElement { return html`