ci(java): compile and test the pure-Java SDK modules - #962
Open
keksmd wants to merge 2 commits into
Open
Conversation
No workflow builds maven-projects/storage-api. java.yml is filtered to maven-projects/java/** and java-info.yml to maven-projects/info/**, so a change to the storage API, or to any module layered on it, reaches main having passed only the license and pre-commit checks. Nothing proves it compiles. This adds a workflow that runs spotless, verify, and javadoc over the pure-Java SDK reactor. The module list lives in one environment variable so each new module extends it in the pull request that introduces the module. Constraint: the java and spark aggregators cannot be excluded by name, because their submodules are enumerated inside profile-scoped module lists, so the reactor is selected by inclusion rather than exclusion. Not-tested: no module in the selected reactor publishes a JaCoCo report yet, so this workflow uploads no coverage.
Review feedback on apache#962: the workflow downloaded every dependency on each run, which ASF Infra pays for, and it pinned an action version three majors behind. The Maven repository is now cached under a key built from the runner OS and the hash of every pom in maven-projects, so a run that changes no dependency restores instead of downloading. Build output is left uncached: target directories restored across runs can hide a stale class from a clean build.
SemyonSinchenko
approved these changes
Aug 21, 2026
Member
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reason for this PR
No workflow compiles
maven-projects/storage-api.java.ymlis filtered tomaven-projects/java/**andjava-info.ymltomaven-projects/info/**, so achange to the storage API merged in #958 reaches
mainhaving passed only thelicense, pre-commit, and PR-title checks. Nothing proves it builds or that its
tests pass.
That gap widens with every module planned under #947 (physical IO, Parquet
backend, chunk layout, reader, writer): each would land with green checks that
never invoked
javac.What changes are included in this PR?
A
GraphAr Java SDK CIworkflow that, for the pure-Java SDK reactor, runs:mvn -pl ${SDK_MODULES} -am spotless:checkmvn -pl ${SDK_MODULES} -am clean verify -Dspotless.check.skip=truemvn -pl ${SDK_MODULES} -am javadoc:javadocThe selected module list is a single
SDK_MODULESenvironment variable, todaystorage-api. Each new module extends that one line in the PR that introducesit, which keeps the addition visible to a reviewer.
The reactor is selected by inclusion rather than by excluding
javaandspark: those two aggregators enumerate their submodules inside profile-scoped<modules>lists, so-pl '!java,!spark'still pullsgraphar-datasourcesinto the reactor and fails on the Scala compile.
Path filters cover the SDK module directories and
maven-projects/pom.xml.Are these changes tested?
Yes, by running the workflow's exact three commands against this branch:
The workflow's own path filter includes
.github/workflows/java-sdk.yml, so italso runs on this pull request.
Are there any user-facing changes?
No. CI only.
Note: no module in the selected reactor declares the JaCoCo plugin yet, so this
workflow uploads no coverage report. Adding JaCoCo per module is left to the
PRs that introduce those modules.
Checklist
make cpplintbefore submitting when changed files are in thecppdirectory.pre-commit runbefore commit the changed files.