We currently use Vert.x in several internal and external projects. Until the most recent project we where building our Vert.x modules using Maven. Gradle is our build tool of choice, but the default approach described at the Vert.x site caused several issues:

  • The task of cloning, cleaning and configuring the template project is error-prone;
  • The template project does not support recent Gradle versions >= 2.x;
  • This approach is not compatible with the Gradle support in IntelliJ IDEA.

While starting our most recent project we investigated the possibility of using Gradle again. Instead of using the approach described at the Vert.x site we are using the excellent Vert.x Gradle plugin provided by Daryl Teo. Using the following Gradle build file we are able to build and run our project from Gradle and import it successfully into IntelliJ IDEA:

// Configure the dependencies for our build script
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        // Specify our dependency on the marvelous plugin from Daryl Teo
        classpath 'com.darylteo.vertx:vertx-gradle-plugin:0.1.3'
    }
}
// Apply the Groovy plugin to compile our Groovy code
apply plugin: 'groovy'

// Apply the Vertx plugin
apply plugin: 'vertx'

repositories {
    jcenter()
}

// Specify the project dependencies
dependencies {
    compile "org.codehaus.groovy:groovy-all:2.3.3"
}

// Configure Vertx
vertx {
    platform {
        // Specify Vert.x version
        version '2.1.5'
        // Language used
        lang 'groovy'
    }

    // Configuration of the module using Vert.x fields using camelcased names
    // See: http://vertx.io/mods_manual.html#module-descriptor-file-modjson
    config {
        main 'groovy:com.jdriven.demo.MainVerticle'
    }

    // Specify the config file to pass to Vert.x using -conf when executing the runMod task
    deployments {
        mod {
            platform {
                conf 'config/vertx/dev.json'
            }
        }
    }
}

Using this configuration exposes the following Vert.x related Gradle tasks:

  • modZip : Creates the module zip
  • debugMod : Run the module including remote debugging
  • runMod : Run the module

More information regarding this marvellous Gradle Vert.x plugin can be found at: https://github.com/darylteo/vertx-gradle-plugin. Note that the credits for the Vert.x Gradle plugin fully go to Daryl Teo. This post is only meant to raise the awareness of the existence of the plugin and to complement him for his great work.   .

shadow-left