Thanks for your interest in contributing! This guide covers the essentials.
- Java 20+
- Maven 3.6+
mvn clean install # build everything
mvn test # run the test suiteRun a single test:
mvn -pl liquidjava-verifier -Dtest=TestExamples#testMultiplePaths testVerify a single file from the CLI:
./liquidjava path/to/File.javaCode formatting runs automatically via formatter-maven-plugin during the validate phase.
Releases are published through GitHub Actions when release tags are pushed to
main:
v*tags publishliquidjava-verifierthrough thepublish-verifierworkflow.api-v*tags publishliquidjava-apithrough thepublish-apiworkflow.
Use release.sh from the repository root to publish a release.
The script automatically verifies the build and tests, bumps the module version, commits the version change, creates the matching tag, and pushes them to main.
./release.sh verifier # publishes liquidjava-verifier
./release.sh api # publishes liquidjava-apiYou can also pass the release version explicitly:
./release.sh verifier 1.2.3
./release.sh api 1.2.3Run releases from a clean main branch. Once the tag is pushed, the matching
GitHub Actions workflow publishes the module to Maven Central.
Tests live under liquidjava-example/src/main/java/testSuite/ and are auto-discovered:
- Single file: name it
Correct*.java(should pass) orError*.java(should fail). - Directory: include
correctorerrorin the directory name.
For failing cases (file or directory), mark each expected error with an inline // <Error Title> comment on the same line where the error should be reported, e.g.:
int r = pos; // Refinement ErrorThe runner matches both the title and the line number, and the number of comments must equal the number of reported errors.
- Fork and create a branch from
main. - Add tests for your change.
- Run
mvn testand make sure it passes. - Open a PR describing the change and linking any related issue.
Use the issue templates. Include a minimal reproducer when possible.
By participating you agree to abide by our Code of Conduct.