diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 224c468e..c631504e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -118,6 +118,34 @@ jobs: path: examples/target/generated-pdfs/** if-no-files-found: error + no-poi-suite: + name: Test suite without poi-ooxml (optional-deps regression) + if: github.event_name == 'pull_request' + needs: architecture-and-documentation-guards + runs-on: ubuntu-latest + env: + JAVA_TOOL_OPTIONS: -Djava.awt.headless=true + + steps: + - name: Check out repository + uses: actions/checkout@v6 + + - name: Set up Temurin JDK 17 + uses: actions/setup-java@v5 + with: + distribution: temurin + java-version: '17' + cache: maven + + - name: Run suite under -P no-poi + # poi-ooxml is declared true; this job + # validates that callers who don't render DOCX still get a + # green suite without the POI footprint. Tests that require + # poi (DocxSemanticBackend output) carry + # @DisabledIfSystemProperty(named = "no.poi", matches = "true") + # and skip cleanly. See Track I1 in the readiness taskboard. + run: ./mvnw -B -ntp test -pl . -P no-poi + binary-compat: name: Binary Compatibility (japicmp vs v1.6.5) if: github.event_name == 'pull_request' diff --git a/CHANGELOG.md b/CHANGELOG.md index ae820fab..d2e8350b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,18 @@ JitPack continue to resolve through the existing coordinates. excluded by convention (`InternalAnnotationCoverageTest` covers those). Method-level `@since` backfill for the ~380 public methods in these packages is intentionally out of scope here and tracked separately. +- **`no-poi` Maven profile + CI job** (Track I1). The `poi-ooxml` + dependency is declared `true` so callers that + render only PDFs don't pay the ~10 MB POI footprint; this PR adds a + regression gate that proves it. Running `./mvnw -P no-poi test -pl .` + excludes `poi-ooxml` (and its `poi` / `poi-ooxml-lite` transitives) + from the surefire test classpath and sets the system property + `no.poi=true`. DOCX-specific tests (`DocxSemanticBackendTest` and the + one DOCX export in `DocumentSessionTest`) now carry + `@DisabledIfSystemProperty(named = "no.poi", matches = "true")` and + skip cleanly. The rest of the canonical suite (1029 tests, 4 skipped + under `-P no-poi`) runs green without POI on the classpath. A new + `no-poi-suite` CI job exercises the profile on every pull request. ### Public API diff --git a/pom.xml b/pom.xml index 7242a31c..9428937b 100644 --- a/pom.xml +++ b/pom.xml @@ -361,6 +361,39 @@ + + + no-poi + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven.surefire.plugin.version} + + + org.apache.poi:poi-ooxml + org.apache.poi:poi + org.apache.poi:poi-ooxml-lite + + + true + + + + + + +