dedup4j
Getting started

Installation

Add the dedup4j starter to a Spring Boot application. · 3 min

Requirements

Group IDio.github.heyedem
Version0.1.0
Java21 or later
Spring Bootbuilt and tested against 4.1.1
LicenseApache License 2.0

dedup4j is built and tested against Spring Boot 4.1.1. That is a narrower promise than "compatible with every 4.1.x patch", and only the tested claim is published.

You also need, in your own application:

  • a configured DataSource — dedup4j reuses it rather than opening its own
  • a storage location: a filesystem directory, an S3 bucket, or an Azure container

Add the starter

Most applications need exactly one dependency.

<dependency>
    <groupId>io.github.heyedem</groupId>
    <artifactId>dedup4j-spring-boot-starter</artifactId>
    <version>0.1.0</version>
</dependency>

The starter transitively brings in the core contracts, the JPA metadata layer, and all three storage adapters. Which adapter activates is decided by configuration, not by which dependency you selected — see Storage providers.

Tip

One starter, every provider

An unselected provider must never construct a client or resolve credentials. Adding the starter does not mean your application tries to reach AWS.

Which artifact do I need?

If you wantAdd
Deduplicated storage in a Spring Boot appdedup4j-spring-boot-starter
The above, plus metrics and an embedded dashboarddedup4j-spring-boot-observability
To build a storage adapter without Springdedup4j-core

dedup4j-spring-boot-observability is an aggregate starter: it pulls in the management endpoints and the embedded dashboard together. It does not replace the main starter's role — see Observability & dashboards.

Published artifacts

Ten components publish to Maven Central as one release train at one version.

ArtifactTypeContains
dedup4jparent POMproperties, dependency management, build config
dedup4j-corelibrarycontent identity, dedup contracts, storage SPI
dedup4j-jpalibrarymetadata entities and repositories
dedup4j-storage-locallibrarylocal filesystem adapter
dedup4j-storage-s3libraryAWS S3 / S3-compatible adapter
dedup4j-storage-azurelibraryAzure Blob Storage adapter
dedup4j-spring-boot-starterstarterauto-configuration, the facade, all providers
dedup4j-spring-boot-managementlibrarymanagement API and metrics endpoints
dedup4j-spring-boot-dashboardlibraryembedded read-only dashboard resources
dedup4j-spring-boot-observabilityaggregate startermanagement + embedded dashboard

You normally depend on the starter and let it resolve the rest. The table is here so that a coordinate you see in a dependency tree is identifiable.

Not on Maven Central

dedup4j-dashboard is a standalone executable application, not a library. It ships as an executable JAR on GitHub Releases and is deliberately excluded from Maven Central — publishing a fat executable as a library artifact would be a mistake that could not be undone.

Do not add it as a dependency. See Observability & dashboards for the difference between the embedded and standalone dashboards.

Verify the wiring

With the starter on the classpath and a provider configured, the application context should start and expose the facade as a bean. If it does not, the cause is almost always a missing provider selection or an unreachable DataSource — Troubleshooting lists the specific failures and what each one means.

Next: Quick start walks through a first deduplicated upload against the local provider.

View source