- JDK 11 or newer (e.g. OpenJDK)
- Apache Maven 3.3.9 or newer
This project adheres to Google Java Style and uses Checkstyle for validating code style.
Run mvn --activate-profiles=checkstyle verify to execute Checkstyle.
Use google_checks.xml for configuring your IDE's inspection and formatting settings.
- This project adheres to Conventional Commits conventions.
- A linear commit history shall be maintained on the main branch. I.e. squash-merges should be used when merging pull requests.
This project uses SpotBugs for static code analysis.
Run mvn --activate-profiles=spotbugs verify to execute SpotBugs.
Run mvn --activate-profiles=coverage verify to execute all tests and to assert code coverage requirements are met.
Run mvn --activate-profiles=checkstyle,spotbugs,coverage verify to build all modules, execute all tests
and run all checks.
Run mvn --activate-profiles=-examples install to install the main artifacts into the local repository.
The code for the hamcrest-mail-jakarta and hamcrest-mail-examples-jakarta modules is “generated” from their non-Jakarta counterparts by copying source files and substituting “jakarta.mail” for “javax.mail”.
Updates are being checked for automatically by GitHub Dependabot.
Run mvn versions:display-dependency-updates
to check for dependency updates.
Run mvn --activate-profiles=checkstyle,spotbugs,coverage,release -DprocessUnboundPlugins=true versions:display-plugin-updates
to check for Maven plug-in updates.
This project uses Release Please for release management.
Release Please handles creation of release tags, GitHub releases and patching version numbers in pom.xml files.
A new release is cut by merging the pull request maintained by Release Please.
Building and deploying the actual Maven Artifacts for a release is the responsibility of the
release.yml workflow.
After a release has been made, Release Please will automatically create another pull request to update the version
numbers in pom.xml files to the next snapshot version
(see the Maven strategy).
This snapshot “release pull request” has to be merged immediately.