SIARD Suite is a comprehensive toolset for archiving relational databases in the SIARD (Software-Independent Archival of Relational Databases) format. The suite ensures long-term preservation and accessibility of database contents, independent of the original database management system.
Key Features:
- Graphical Interface: User-friendly GUI for archiving, restoring, searching, and exporting databases
- Command-Line Tools: Powerful CLI for automated workflows and scripting
- Multi-Database Support: Compatible with PostgreSQL, MySQL, Oracle, MS SQL Server, DB2, and MS Access
- SIARD Format 2.2: Compliant with the latest SIARD standard for database archival
Project Structure: This is a Gradle-based monorepo containing multiple modules:
siard-suite-app- Desktop application with GUIsiard-cmd- Command-line interfacesiard-api- Core API for reading/writing SIARD filesjdbc-*- Database-specific JDBC wrappers- Supporting libraries and utilities
Java 17 with JavaFX is required. Download from:
For asdf users:
asdf installDocker is required for running integration tests (uses Testcontainers).
GUI Application:
./gradlew :siard-suite-app:runCommand-Line Interface:
First, build the distribution:
./gradlew :siard-cmd:installDistThen run the CLI tools:
# Download database to SIARD archive
./siard-cmd/build/install/siard-cmd/bin/siard-from-db <arguments>
# Upload SIARD archive to database
./siard-cmd/build/install/siard-cmd/bin/siard-to-db <arguments>We recently performed a bulk reformatting of the entire Java codebase to standardize our style. To avoid seeing "style-only" changes when using git blame, we use a .git-blame-ignore-revs file. This file contains the commit hashes of the formatting commits. Github will automatically use this file and does not show the formatting commits in the blame.
To ignore these formatting commits in your local terminal or IDE, run the following command once in the project root:
git config blame.ignoreRevsFile .git-blame-ignore-revsBuild all modules:
./gradlew clean build -x testNote: running all tests takes quite long!
Build specific module:
./gradlew :module-name:buildThe build creates distributions in build/distributions/ with executable scripts and all dependencies.
Run all tests:
./gradlew testRun tests for a specific module:
./gradlew :module-name:testExamples:
./gradlew :siard-api:test # Core API tests
./gradlew :jdbc-postgres:test # PostgreSQL wrapper tests
./gradlew :siard-cmd:test # CLI testsIntegration tests (siard-cmd):
./gradlew :siard-cmd:integrationTest # All integration tests
./gradlew :siard-cmd:integrationTestPostgres # PostgreSQL only
./gradlew :siard-cmd:integrationTestMysql # MySQL onlyNote: all tests require Docker to be running (uses Testcontainers).
Create application image:
./gradlew jpackageImageThe image will be available at ./build/jpackage/siard-suite (OS-specific).
Create installer:
./gradlew jpackageCreates platform-specific installers (DMG, EXE, MSI, DEB, or RPM).
Ubuntu users: Install alien if RPM building fails:
sudo apt install alienVersions follow the SIARD format version (2.2.x) and are managed with the Axion Release Plugin.
Check current version:
./gradlew currentVersionCreate a release:
./gradlew releaseThis creates a tag and pushes it to remote, triggering GitHub Actions to build deliverables.
Note: Official GitHub releases must be created manually by BAR.
Documentation is written in AsciiDoc and bundled with the application.
Generate PDF documentation:
./gradlew :siard-suite-app:asciidoctorPdfAvailable Documentation:
Contributions to the codebase have been made with the support of Windsurf. Windsurf is AI-powered code completion tool, that is trained exclusively on natural language and source code data with permissive licenses.