DOCUMENTATION: http://xvik.github.io/dropwizard-guicey/
Support: discussions | gitter chat
Dropwizard 4.0.7 guice 7.0.0 integration.
Features:
- Auto configuration from classpath scan and guice bindings.
- Yaml config values bindings by path or unique sub objects.
- Advanced Web support
- Dropwizard style console reporting: detected (and installed) extensions are printed to console to remove uncertainty
- Test support: custom junit and spock extensions
- Advanced test abilities to disable or override application logic
- Developer friendly:
- core integrations may be replaced (to better fit needs)
- rich api for developing custom integrations, and hooking into lifecycle)
- out of the box support for plug-n-play plugins (auto discoverable)
- diagnostic tools (reports), support for custom diagnostic tools
If guicey makes your life easier, you can support its development.
Due to 3 major changes in dropwizard recently, 3 guicey versions supported:
Dropwizard | Guicey | Reason |
---|---|---|
2.1.x | 5.x | Last java 8 compatible version (EOL January 31 2024) |
3.x | 6.x | Changed core dropwizard packages - old 3rd paty bundles would be incompatible |
4.x | 7.x | Jakarta namespace migration - 3rd party guice modules might be incompatible |
All branches use the same project structure: core guicey merged with extension modules. It greatly simplifies releases and keeps actual examples in one branch.
Upcoming guicey changes would be ported in all 3 branches.
Maven:
<dependency>
<groupId>ru.vyarus</groupId>
<artifactId>dropwizard-guicey</artifactId>
<version>7.1.3</version>
</dependency>
Gradle:
implementation 'ru.vyarus:dropwizard-guicey:7.1.3'
Dropwizard | Guicey |
---|---|
4.0 | 7.1.3 |
3.0 | 6.2.3 |
2.1 | 5.10.2 |
2.0 | 5.5.0 |
1.3 | 4.2.3 |
1.1, 1.2 | 4.1.0 |
1.0 | 4.0.1 |
0.9 | 3.3.0 |
0.8 | 3.1.0 |
0.7 | 1.1.0 |
GRADLE 6 users: You might face Could not resolve com.google.guava:guava:32.1.2-jre.
problem. This caused by guava packaging issue (affected many people).
Either upgrade to gradle 7-8 or apply workaround
Use BOM for guice, dropwizard and guicey modules dependency management. BOM usage is highly recommended as it allows you to correctly update dropwizard dependencies.
Gradle:
dependencies {
implementation platform('ru.vyarus.guicey:guicey-bom:7.1.3')
// uncomment to override dropwizard and its dependencies versions
//implementation platform('io.dropwizard:dropwizard-dependencies:4.0.7')
// no need to specify versions
implementation 'ru.vyarus:dropwizard-guicey'
implementation 'ru.vyarus.guicey:guicey-eventbus'
implementation 'io.dropwizard:dropwizard-auth'
implementation 'com.google.inject:guice-assistedinject'
testImplementation 'io.dropwizard:dropwizard-testing'
}
Maven:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>ru.vyarus.guicey</groupId>
<artifactId>guicey-bom</artifactId>
<version>7.1.3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- uncomment to override dropwizard and its dependencies versions
<dependency>
<groupId>io.dropwizard/groupId>
<artifactId>dropwizard-dependencies</artifactId>
<version>4.0.7</version>
<type>pom</type>
<scope>import</scope>
</dependency> -->
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>ru.vyarus</groupId>
<artifactId>dropwizard-guicey</artifactId>
</dependency>
</dependencies>
BOM includes:
BOM | Artifact |
---|---|
Guicey modules | ru.vyarus.guicey:guicey-[module] |
Dropwizard BOM | io.dropwizard:dropwizard-bom |
Guice BOM | com.google.inject:guice-bom |
HK2 bridge | org.glassfish.hk2:guice-bridge |
Spock-junit5 | ru.vyarus:spock-junit5 |
Snapshots may be used through JitPack
Add JitPack repository:
repositories { maven { url 'https://jitpack.io' } }
For spring dependencies plugin (when guicey pom used as BOM):
dependencyManagement {
resolutionStrategy {
cacheChangingModulesFor 0, 'seconds'
}
imports {
mavenBom "ru.vyarus:dropwizard-guicey:master-SNAPSHOT"
}
}
For direct guicey dependency:
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
dependencies {
implementation 'ru.vyarus:dropwizard-guicey:master-SNAPSHOT'
}
Note that in both cases resolutionStrategy
setting required for correct updating snapshot with recent commits
(without it you will not always have up-to-date snapshot)
OR you can depend on exact commit:
- Go to JitPack project page
- Select
Commits
section and clickGet it
on commit you want to use and use commit hash as version:ru.vyarus:dropwizard-guicey:56537f7d23
Maven:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>ru.vyarus</groupId>
<artifactId>dropwizard-guicey</artifactId>
<version>master-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>ru.vyarus</groupId>
<artifactId>dropwizard-guicey</artifactId>
</dependency>
</dependencies>
Or simply change version if used as direct dependency (repository must be also added):
<dependency>
<groupId>ru.vyarus</groupId>
<artifactId>dropwizard-guicey</artifactId>
<version>master-SNAPSHOT</version>
</dependency>
Read documentation
- yaml-updater - yaml configuration update tool, preserving comments and whitespaces (has dropwizard module)
- generics-resolver - runtime generics resolution
- guice-validator - hibernate validator integration for guice (objects validation, method arguments and return type runtime validation)
- guice-ext-annotations - @Log, @PostConstruct, @PreDestroy and utilities for adding new annotations support
- guice-persist-orient - guice integration for orientdb
- dropwizard-orient-server - embedded orientdb server for dropwizard