- 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
VERSION
file and set the SQLite version to use. - Edit the version number in
pom.xml
to${VERSION}.0-SNAPSHOT
. So ifVERSION
=3.39.2
, the version number inpom.xml
should be3.39.2.0-SNAPSHOT
.
# For the current platform
$ make native
The native library is cross-compiled for different OS and architecture by using Docker.
$ make native-all
On 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.h
The 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.xml
is 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
deploy
goal with therelease
profile. 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.xml
is 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.