- Fork and clone the repository
- Ensure Java 21 and Maven 3.8+ are installed
- Run
mvn clean verify— all checks must pass before you start
- Branch from
main - Use descriptive branch names:
feature/add-join-support,fix/between-operator-null - Open a pull request against
main
All of the following must pass before a PR is merged:
| Check | Command | Gating |
|---|---|---|
| Checkstyle | runs during mvn validate |
build fails on any violation |
| Tests | mvn test |
all tests must pass |
| Coverage | mvn verify |
≥ 80% instruction coverage (JaCoCo) |
Do not use --forks-enforced or -Dcheckstyle.skip to bypass checks.
See AGENTS.md for the full style guide. The short version:
- 4-space indentation, max 120 chars per line, no trailing whitespace
- Full Javadoc on every public class and method (
@param,@return,@throws) - Declare locals
finalwhen not reassigned - Cyclomatic complexity ≤ 10; method length ≤ 60 lines
Run mvn checkstyle:check locally before pushing.
- Place tests in
src/test/…mirroring the source package - Test method names should describe the behaviour:
buildsSelectWithDistinct(),throwsOnNullColumn() - Cover both happy paths and edge cases (null inputs, empty lists, boundary values)
- Aim to keep or improve the 80% instruction coverage threshold
- Add the value to the
Operatorenum with a Javadoc comment - Handle the new operator in
Condition#matches()for in-memory filtering - Handle it in
AbstractSqlDialect(and dialect subclasses if behaviour differs) - Add tests for all three layers
- Add JUnit tests under
src/test/java/com/github/ezframework/javaquerybuilder/query/and its subpackages. - Focus on covering all core features, edge cases, and error handling.
Releases are published to GitHub Packages and available via JitPack automatically:
- Draft a new GitHub Release with a semantic version tag (e.g.
v1.1.0) - Publishing the release triggers
.github/workflows/publish.yml - The workflow deploys the JAR,
-sources.jar, and-javadoc.jarto GitHub Packages - JitPack picks up the tag and builds automatically from jitpack.yml
Open a GitHub Issue with a minimal reproducible example. For security issues see the security section in README.md.