Spring Boot on OpenShift using Gradle (and groovy)

This is a variation of the Spring Boot with Groovy on OpenShift Example built with gradle.

The purpose of this example is to demonstrate the following:

To build the application:

./gradlew build

The application is using:

 compile("io.dekorate:openshift-spring-starter:${dekorateVersion}")
 annotationProcessor("io.dekorate:openshift-annotations:${dekorateVersion}")

Which contains all the required modules, including the annotation processors that detect spring web applications.

To enable annotation processing in gradle:

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath("net.ltgt.gradle:gradle-apt-plugin:0.19")
  }
}

apply plugin: 'org.junit.platform.gradle.plugin'

The Main.groovy is annotated with @OpenshiftApplication which triggers the resource generation. This annotation allows the user to trigger an s2i build after the compilation, by passing the system property dekorate.build=true to the build for example:

./gradlew clean build -Ddekorate.build=true

Note: To perform an actual build, the oc binary is required to be configured to point to an existing openhisft environment.

The spring web application processor will detect our Controller.java, and will:

Integration testing

For the purpose of integration testing it includes:

testRuntime("org.junit.jupiter:junit-jupiter-engine:5.1.0")
testImplementation("io.dekorate:openshift-junit:${dekorateVersion}")

This annotation will bring in the junit5 extension that dekorate provides, that allows you to run integration tests via the ‘@OpenshiftIntegrationTest’ annotation. The integration test is SpringBootOnOpenshiftTests.java and it demonstrates:

The test are going to be automatically run when building the application. For example:

 ./gradlew clean build

Note: To run the integration tests an actual openshift environment is required.