- JDK 11
Since August 2022 the commit messages follow the Conventional Commits standard. This allows for easier and better release notes generation.
- Fork this project on GitHub
- make some changes
git commit -m 'type: what changes are made to the source'git push- Create a pull request
- JDK 11
- Perl
- Maven
- make
- gcc
- curl
- unzip
- Docker (for cross-compilation only)
- Edit the
VERSIONfile and set the SQLite version to use. - Edit the version number in
pom.xmlto${VERSION}.0-SNAPSHOT. So ifVERSION=3.39.2, the version number inpom.xmlshould be3.39.2.0-SNAPSHOT.
# For the current platform
$ make nativeThe native library is cross-compiled for different OS and architecture by using Docker.
$ make native-allOn Windows it is recommended to use WSL2.
You can check the native-all goal in Makefile for a list of available targets.
By default, sqlite-jdbc will download the SQLite amalgamation in order to build the native libraries.
You can use an existing installation of SQLite instead, by passing SQLITE_OBJ=/path/to/libsqlite3.a and SQLITE_HEADER=/path/to/sqlite3.h.
Example:
make native SQLITE_OBJ=/usr/local/lib/libsqlite3.so SQLITE_HEADER=/usr/local/include/sqlite3.hThe native libraries can all be built with Github Actions:
- by running the Build Native workflow manually
- by commenting "/native" on a PR
Once the build succeeds, a commit will be added to the branch or PR with the updated binaries.
The project version can change by 2 means:
- By changing the bundled version of SQLite, in which case the project version changes to align with the SQLite version. This is a manual process for now.
- When triggering a release. This is done automatically through GitHub Actions.
A release can be triggered from GitHub Actions by manually running the CI workflow and ticking the Perform release option.
Multiple actions will happen in sequence, all orchestrated by the GitHub workflow:
- The version in
pom.xmlis changed to remove the-SNAPSHOT. This is done by using the Maven Versions plugin. - Deploy to Maven Central. This is done by using the Maven
deploygoal with thereleaseprofile. It relies on credentials stored in the repository's secrets. - Perform a release commit with the changed
pom.xml, as well as creating a git tag with the version number. - Create a GitHub release. This is done via JReleaser, and will also include a changelog since the last release.
- The version in
pom.xmlis incremented for the next snapshot. - Perform a commit with the version updated for the next snapshot.
The CI workflow will also publish a new snapshot to Sonatype's snapshots repository whenever a change occurs.