/dropwizard-guicey

Dropwizard guice integration

Primary LanguageJavaMIT LicenseMIT

Dropwizard guice integration

License CI Appveyor build status codecov

DOCUMENTATION: http://xvik.github.io/dropwizard-guicey/

Additional repositories:

Support: discussions | gitter chat

About

Dropwizard 2.1.1 guice 5.1.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

Sponsors

    Channel

If guicey makes your life easier, you can support its development.

Thanks to

Setup

Maven Central

May be used through extensions project BOM or directly.

Maven:

<dependency>
  <groupId>ru.vyarus</groupId>
  <artifactId>dropwizard-guicey</artifactId>
  <version>5.6.1</version>
</dependency>

Gradle:

implementation 'ru.vyarus:dropwizard-guicey:5.6.1'
Dropwizard Guicey
2.1 5.6.1
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

WARNING: Since dropwizard 2.1.0 jackson blackbird used by default instead of afterburner. If you use java 8 then apply afterburner dependency in order to switch into it:

implementation 'com.fasterxml.jackson.module:jackson-module-afterburner:2.13.3'

(omit version if guicey or dropwizard BOM used). Without it you'll always see a nasty warning on startup (afterburner is better for java 8, but for java 9+ blackbird should be used)

BOM

Guicey pom may be also used as maven BOM.

NOTE: If you use guicey extensions then use extensions BOM instead (it already includes guicey BOM).

BOM usage is highly recommended as it allows you to correctly update dropwizard dependencies.

Gradle:

dependencies {
    implementation platform('ru.vyarus:dropwizard-guicey:5.6.1')
    // uncomment to override dropwizard and its dependencies versions    
    //implementation platform('io.dropwizard:dropwizard-dependencies:2.1.1')

    // no need to specify versions
    implementation 'ru.vyarus:dropwizard-guicey'
   
    implementation 'io.dropwizard:dropwizard-auth'
    implementation 'com.google.inject:guice-assistedinject'   
    
    testImplementation 'ru.vyarus:spock-junit5'
    testImplementation 'org.spockframework:spock-core:2.1-groovy-3.0'
    testImplementation 'io.dropwizard:dropwizard-test'
}

Maven:

<dependencyManagement>  
    <dependencies>
        <dependency>
            <groupId>ru.vyarus</groupId>
            <artifactId>dropwizard-guicey</artifactId>
            <version>5.6.1</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>2.1.1</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 itself ru.vyarus:dropwizard-guicey
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

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 click Get 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>

Usage

Read documentation

Might also like


java lib generator