JDBC Driver(s)
Add the dependency for the JDBC Driver(s) you want to use. For example, with Postgres we could add:
<!-- JDBC Driver(s) --> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.7.8</version> </dependency>
Main dependency
Ebean provides a dependency per database platform. We include one or more of these dependencies for each database that our application is going to use.
- io.ebean:ebean-clickhouse
- io.ebean:ebean-cockroach
- io.ebean:ebean-db2
- io.ebean:ebean-hana
- io.ebean:ebean-h2
- io.ebean:ebean-mysql
- io.ebean:ebean-mariadb
- io.ebean:ebean-oracle
- io.ebean:ebean-postgres
- io.ebean:ebean-sqlanywhere
- io.ebean:ebean-sqlite
- io.ebean:ebean-sqlserver
- io.ebean:ebean-yugabyte
For example, if our application is only going to use Postgres then
we add the io.ebean:ebean-postgres dependency.
<dependency> <groupId>io.ebean</groupId> <artifactId>ebean-postgres</artifactId> <version>17.2.0</version> </dependency>
If for example our application is going to use both YugabyteDB and ClickHouse then we add both dependencies.
<dependency> <groupId>io.ebean</groupId> <artifactId>ebean-yugabyte</artifactId> <version>17.2.0</version> </dependency> <dependency> <groupId>io.ebean</groupId> <artifactId>ebean-clickhouse</artifactId> <version>17.2.0</version> </dependency>
If we want to support all platforms we can just use io.ebean:ebean
which is a composite of all the supported platforms.
<dependency> <groupId>io.ebean</groupId> <artifactId>ebean</artifactId> <!-- All database platforms --> <version>17.2.0</version> </dependency>
Test dependency - ebean-test
Add io.ebean:ebean-test as a test dependency.
This configures Ebean for running tests including automatic use of docker containers for Postgres, MySql, Oracle, SqlServer, ClickHouse, Yugabyte, Hana + support for H2 and SqlLite.
Refer to: docs / testing
<!-- Test dependencies --> <dependency> <groupId>io.ebean</groupId> <artifactId>ebean-test</artifactId> <version>17.2.0</version> <scope>test</scope> </dependency>
build / plugins
In the build / plugins section:
- Add the
ebean-maven-pluginto perform build time enhancement - Add or modify the
maven-compiler-pluginto register the querybean-generator annotation processor.
<build> <plugins> <plugin> <!-- perform ebean enhancement --> <groupId>io.ebean</groupId> <artifactId>ebean-maven-plugin</artifactId> <version>17.2.0</version> <extensions>true</extensions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.14.1</version> <configuration> <annotationProcessorPaths> <path> <!-- generate ebean query beans --> <groupId>io.ebean</groupId> <artifactId>querybean-generator</artifactId> <version>17.2.0</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build>
Example pom for Postgres
An example pom for an application that only uses Postgres is:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>hello-ebean</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.release>25</maven.compiler.release> <!-- Prefer release --> <maven.compiler.source>25</maven.compiler.source> <!-- fallback --> <maven.compiler.target>25</maven.compiler.target> <!-- fallback --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <!-- JDBC Driver(s) --> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.7.8</version> </dependency> <dependency> <!-- ebean postgres, add more platforms as needed --> <groupId>io.ebean</groupId> <artifactId>ebean-postgres</artifactId> <version>17.2.0</version> </dependency> <!-- test dependencies --> <dependency> <groupId>io.ebean</groupId> <artifactId>ebean-test</artifactId> <version>17.2.0</version> <scope>test</scope> </dependency> <dependency> <!-- Optional extra: JUnit5 + AssertJ + Mockito --> <groupId>io.avaje</groupId> <artifactId>junit</artifactId> <version>1.7</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <!-- perform ebean enhancement --> <groupId>io.ebean</groupId> <artifactId>ebean-maven-plugin</artifactId> <version>17.2.0</version> <extensions>true</extensions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.14.1</version> <configuration> <annotationProcessorPaths> <path> <!-- generate ebean query beans --> <groupId>io.ebean</groupId> <artifactId>querybean-generator</artifactId> <version>17.2.0</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build> </project>