Category Archives: groovy

Spring Boot running in 2 min

Spring Boot 1.0.1 is released. I wanted to find the fastest way to get a spring boot app running. The usual “Hello world” was created and running in around 2 minutes. For the creation of the initial project files I used lazybones. The project template uses gradle as build tool. So I had to install gradle too. And the easiest way to install lazybones and gradle is gvm.

Install gvm:

curl -s get.gvmtool.net | bash
source "//.gvm/bin/gvm-init.sh"

Install gradle and lazybones:

gvm install gradle
gvm install lazybones

Create a project with the name “mycrm” with the template “spring-boot-actuator”:

lazybones create spring-boot-actuator mycrm

Change into project directory and build the runable jar:

cd mycrm
gradle bootRepackage

Run the application:

java -jar build/libs/spring-boot-sample-actuator-1.0.0.jar &

Get the hello world 🙂

wget -O - localhost:8080 | less

Done.

 

Groovy – Process#pipeTo und Operator Overloading

Operator Overloading ist eine feine Sache. Groovy erweitert z.B. die Klasse java.lang.Process um die Methode “or(Process right)”. “or” wird in Groovy auf den Operator “|” gemappt. Dadurch kann man die Ausgabe eines Prozesses zu einem anderen “pipen”

test.groovy:

#!/usr/bin/env groovy
def p1 = "ls -al".<a href="http://groovy.codehaus.org/groovy-jdk/java/lang/String.html#execute()">execute</a>()
def p2 = "grep test".execute()
<strong>p1 | p2</strong>
p2.<a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Process.html#waitFor()">waitFor</a>()
println p2.<a href="http://groovy.codehaus.org/groovy-jdk/java/lang/Process.html#getText()">text</a>

Groovy als Javaentwickler

Inzwischen sind ein paar Tage ins Land gegangen seit ich über Groovy berichtet habe. Was wirklich toll ist, dass man als Java-Entwickler “fast” einfach so loslegen kann. Man braucht auf keine seiner Lieblings-lib’s verzichten und syntaktisch sind sich Groovy und Java auch recht nah. So habe ich auch das Nümmerlitiger-Tool geschrieben – just do it. Es ist fertig und funktioniert.

Damals war ich ca auf Seite 150 von “Groovy in Action”. Jetzt bin ich um die Seite 300. Sozusagen um das Doppelte schlauer 🙂 Die Hälfte vom Code könnte ich wahrscheinlich schon wegwerfen – weil unnötig. Da gibt es ja so schöne Sachen in Groovy – z.B die Builder oder GPath. Allein wegen des AntBuilder ist, z.B. für alle die die sich mit Build-Automatisierung auseinandersetzen, Groovy einen Blick wert.
Und wie sagt schon Der Pragmatische Programmierer: Jedes Jahr eine Sprache lernen.

Talk to Snipplr with Groovy

Wie ich schon geschrieben habe, bin ich derzeit dabei in Groovy einzuarbeiten. Dazu schreibe ich ein kleinen Command Line Tool, welches wir zum Eclipse-RCP-Release-bauen verwenden können. Es gibt da einen Job den nennen wir “Nümmerlitiger” (jeder Entwickler darf mal). Eine Eclipseapplikation besteht aus Plugins und sind alle in separaten Eclipseprojekten. Wenn man nun die Version zu einem Plugin baut, so müssen wir pro Plugin an dem entwickelt wurde (diff in subversion) wurde die Bundle-Version-Nummer im MANIFEST.MF des Plugins hochsetzen, dann die Datei ins Subversion einchecken und dann noch unsere MAP-Datei auf die Versionsnummer aktualisieren. Die MAP-Datei (Siehe dazu Präsentation von meinen Kollegen Edwin und Löti) ist unsere Steuerdatei für den automatischen Build. Diese muss natürlich zum Schluss auch eingecheckt werden. Ausserdem darf man das Taggen des Plugins nicht vergessen. Der Prozess ist nicht nur Fehleranfällig, nein er ist auch langweilig und dauert schon mal 30min wenn man wie wir ca. 20 Plugins in einem Projekt hat.

Gestern bin ich beim Suchen nach Beispielen auf snipplr gestossen und habe am Abend gleich mal probiert mit Groovy auf die XML-RPC Schnittstelle zuzugreifen.

[snippet=2624]

Das ist wirklich einfach. (Übrigens wird der Code via einem Snipplr-Wordpress-Plugin von snipplr geholt und dargestellt. Die Buchstaben “URL” z.B. sind ein Link auf Google.) Als XML-RPC-Implementierung habe ich die von ws.apache.org benutzt.

Update 2008-03-03: Das Plugin funktioniert nicht mehr mit neueren WordPress-Versionen. Deshalb der Code hier:

package net.nautsch.snipplr;import org.apache.xmlrpc.client.XmlRpcClient;

import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

class SnipplrRunner {

static void main(args) {

        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl()

    config.setServerURL(new URL("http://snipplr.com/xml-rpc.php"))

XmlRpcClient client = new XmlRpcClient()

        client.setConfig(config)

        Object[] params = ["insert your id here"]

def boolean result = client.execute("user.checkkey", params)

    println result

  }

}