Maven ist out, Gradle ist in - so habe ich kürzlich erfahren. Zeit für einen Blick darauf.

Zuerst muss es installiert werden. Auf dem Mac benutze ich sdkman:

curl -s "https://get.sdkman.io" | bash
source "/Users/twiss1/.sdkman/bin/sdkman-init.sh"

Siehe auch die offizielle Dokumentation.

sdk list gradle
sdk install gradle 3.4.1
gradle -v

Beginnen wir mit einem einfachen Java “Hello World!”, das von Gradle kompiliert und ausgeführt wird.

package com.rampmeupscotty.blog;

public class Hello {
 public static void main(String[] args) {
 System.out.println("Hello Gradle");
 }
}

Ich habe diese Datei in myproject/src/main/java/com/rampmeupscotty/blog abgelegt.

Dann erstelle ich eine Datei namens build.gradle in myproject/app mit folgendem Inhalt:

apply plugin: 'java'
apply plugin: 'application'

mainClassName = "com.rampmeupscotty.blog.Hello"

Im myproject-Verzeichnis kann ich überprüfen, welche Tasks verfügbar sind mit:

gradle tasks -all

Die relevanten sind build und run. Das Ausführen von gradle -q run sollte Folgendes produzieren:

Hello Gradle

Es macht nur halb so viel Spaß ohne Docker. Erweitern wir build.gradle ein wenig:

buildscript {
 repositories {
  jcenter()
 }

 dependencies {
  classpath 'com.bmuschko:gradle-docker-plugin:3.0.6'
 }
}

apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'com.bmuschko.docker-java-application'

mainClassName = 'com.rampmeupscotty.blog.Hello'

docker {
 javaApplication {
  maintainer = 'The Dude "thedude@email.com"'
  tag = 'thedude/gradle-docker:latest'
 }
}

Baue das Image mit gradle dockerBuildImage. Danach führe es aus mit:

docker run -ti thedude/gradle-docker

Zufrieden mit dem Ergebnis? Pushe das Image in die Registry mit gradle dockerPushImage. Ohne Parameter wird die offizielle Docker-Registry verwendet.

Das war’s für heute!