druvu-lib-excel
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>com.druvu</groupId>
<artifactId>druvu-lib-excel</artifactId>
<version>1.0.0</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.druvu</groupId>
<artifactId>druvu-lib-excel</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>druvu-lib-excel</name>
<description>Excel reports from plain Java: every column of a sheet declared in one place</description>
<url>https://github.com/DenissLarka/druvu-lib-excel</url>
<scm>
<url>https://github.com/DenissLarka/druvu-lib-excel</url>
<connection>scm:git:https://github.com/DenissLarka/druvu-lib-excel</connection>
<developerConnection>scm:git:https://github.com/DenissLarka/druvu-lib-excel</developerConnection>
<tag>HEAD</tag>
</scm>
<developers>
<developer>
<name>Deniss LARKA</name>
<email>deniss.larka@gmail.com</email>
</developer>
</developers>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>25</java.version>
<!-- Dependency versions -->
<fastexcel.version>0.20.2</fastexcel.version>
<!-- Test-only: the independent reader -->
<poi.version>5.5.1</poi.version>
<commons-io.version>2.22.0</commons-io.version>
<commons-codec.version>1.22.1</commons-codec.version>
<testng.version>7.12.0</testng.version>
<assertj.version>3.27.7</assertj.version>
<!-- Plugin versions -->
<maven-compiler-plugin.version>3.16.0</maven-compiler-plugin.version>
<maven-surefire-plugin.version>3.6.0</maven-surefire-plugin.version>
<maven-jar-plugin.version>3.5.1</maven-jar-plugin.version>
<maven-source-plugin.version>3.4.0</maven-source-plugin.version>
<maven-javadoc-plugin.version>3.12.0</maven-javadoc-plugin.version>
<maven-enforcer-plugin.version>3.6.3</maven-enforcer-plugin.version>
<!-- Code quality plugin versions (same set as druvu-lib-json / druvu-acc-parent) -->
<spotbugs-maven-plugin.version>4.10.4.1</spotbugs-maven-plugin.version>
<maven-pmd-plugin.version>3.28.0</maven-pmd-plugin.version>
<maven-checkstyle-plugin.version>3.6.0</maven-checkstyle-plugin.version>
<spotless-maven-plugin.version>3.10.2</spotless-maven-plugin.version>
<palantir-java-format.version>2.90.0</palantir-java-format.version>
</properties>
<dependencies>
<!-- EXCEL: the one runtime dependency - small, streaming, a real module. The public API never
exposes a fastexcel type. -->
<dependency>
<groupId>org.dhatim</groupId>
<artifactId>fastexcel</artifactId>
<version>${fastexcel.version}</version>
</dependency>
<!-- TEST -->
<!-- POI is the independent reader: every test reads the written file back with it, so the
library is never verified by the code that produced the file.
POI's own tree disagrees with itself (poi declares commons-io 2.21.0 / commons-codec 1.20.0,
its commons-compress asks for one patch lower), which fails dependencyConvergence. So the
two are excluded from the POI subtree and owned below, one version each. Own only what
diverges - re-measure on every POI bump. -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</exclusion>
<exclusion>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${commons-codec.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>${testng.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>${assertj.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<release>${java.version}</release>
<debug>true</debug>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven-jar-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-plugin.version}</version>
<configuration>
<show>public</show>
<doclint>none</doclint>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<!-- Tests run on the classpath, as in the other druvu libs; module-info.java is
still validated at compile time. -->
<useModulePath>false</useModulePath>
</configuration>
</plugin>
<!-- Code quality gates: part of `verify`, not optional. Checkstyle declares no execution,
so it stays a report-only goal (`mvn checkstyle:check`), same as in druvu-lib-json. -->
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>${spotbugs-maven-plugin.version}</version>
<configuration>
<effort>Max</effort>
<threshold>Low</threshold>
<xmlOutput>true</xmlOutput>
<includeTests>true</includeTests>
<excludeFilterFile>${project.basedir}/_spotbug-filters/spotbugs-exclude.xml</excludeFilterFile>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-pmd-plugin</artifactId>
<version>${maven-pmd-plugin.version}</version>
<configuration>
<printFailingErrors>true</printFailingErrors>
<failurePriority>3</failurePriority>
<includeTests>true</includeTests>
<linkXRef>false</linkXRef>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${maven-checkstyle-plugin.version}</version>
<configuration>
<configLocation>google_checks.xml</configLocation>
</configuration>
</plugin>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${maven-enforcer-plugin.version}</version>
<executions>
<execution>
<id>enforce</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<banDuplicatePomDependencyVersions/>
<dependencyConvergence/>
<requireJavaVersion>
<version>${java.version}</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<!-- spotless: house code formatter (same config as the other druvu libs).
`mvn spotless:apply` reformats; `check` runs in verify and fails on unformatted code. -->
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>${spotless-maven-plugin.version}</version>
<configuration>
<java>
<palantirJavaFormat>
<version>${palantir-java-format.version}</version>
<style>PALANTIR</style>
<formatJavadoc>true</formatJavadoc>
</palantirJavaFormat>
<removeUnusedImports/>
</java>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
<!-- Maven Central: `mvn clean deploy -Prelease`, run locally. The upload stops at VALIDATED;
publishing is a click in the Portal, because a version on Central is there for good. -->
<profiles>
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.8</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<gpgArguments>
<arg>--batch</arg>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.11.0</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<checksums>required</checksums>
<skipPublishing>false</skipPublishing>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>