Skip to content

Latest commit

 

History

History
72 lines (44 loc) · 2.82 KB

File metadata and controls

72 lines (44 loc) · 2.82 KB

Development Guidelines

Requirements

Code Style

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.

Git Conventions

  1. This project adheres to Conventional Commits conventions.
  2. A linear commit history shall be maintained on the main branch. I.e. squash-merges should be used when merging pull requests.

Static Code Analysis

This project uses SpotBugs for static code analysis.

Run mvn --activate-profiles=spotbugs verify to execute SpotBugs.

Testing

Run mvn --activate-profiles=coverage verify to execute all tests and to assert code coverage requirements are met.

Building

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.

Code Generation

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”.

Checking for Dependency and Plug-in Updates

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.

Release Process

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.