Vor den ersten Schritten liegt immer die Installation. Im Falle von Grails gestaltet die sich relativ einfach:
- Download und Auspacken in einem beliebigen Verzeichnis
- Umgebungsvariable JAVA_HOME auf eine existierende J2EE Installation (Version >= 1.4) setzen
das sieht dann unter Windows so aus:
> set JAVA_HOME=C:\j2sdk1.4.2_02
> set PATH=%PATH%;\bin
Ist man damit fertig steht grails zur Verfügung. Mit grails help
kann man sich alle möglichen Kommandos anzeigen lassen und zugleich feststellen, ob grails richtig installiert ist.
Usage: grails [target]
Targets:
"create-app" - Create a new grails app
"create-controller" - Create a new controller
"create-service" - Create a new service
"create-domain-class" - Create a new domain class
"create-taglib" - Create a new tag library class
"create-test-suite" - Create a new test suite
"create-job" - Create a quartz scheduled job
"generate-controller" - Generates a controller from a domain class
"generate-views" - Generates the views from a domain class
"generate-all" - Generates the all artifacts from a domain class
"install-dojo" - Installs the Dojo toolkit into the current project
"test-app" - Run current app's unit tests
"run-app" - Run the application locally and wait
"create-webtest" - Create the functional test layout
"generate-webtest" - Generates a WebTest from a domain class
"run-webtest" - Run the functional tests for a running app
"war" - Creates a deployable Web Application Archive (WAR)
"shell" - Opens the Grails interactive command line shell
"console" - Opens the Grails interactive swing console
Mit diesem Wissen kann man jetzt eine Applikation erstellen:
> cd
> grails create-app
...
create-app:
[input] Enter application name:
usermanagement
...
BUILD SUCCESSFUL
Die Anwendung wäre jetzt schon mit grails run-app
lauffähig, aber zum Testen wäre es schön, auch schon einmal Daten abzufragen oder eingeben, ändern oder löschen zu können (die s.g. crud Operationen). Grails nutzt, wie viele andere Webanwendungen auch, das Model-View-Controller (MVC) Entwurfsmuster. D.h., dass man für das Model (eigentliche Daten) Klassen benötigt, über die man die Daten persistent abspeichern kann. Bei Grails spricht man hier von den s.g. Domain Klassen, deren Grundgerüst man wie folgt generiert (sie aber auch manuell anlegen kann).
> grails create-domain-class
...
create-domain-class:
[input] Enter domain class name:
user
...
Danach befindet sich im Verzeichnis grails-appdomain
die Datei User.groovy
mit dem Gerüst der Domain – Klasse. Jeder Benutzer, der durch ein Objekt der Domain – Klasse User repräsentiert wird, soll die Eigenschaften .
class User {
Long id
Long version
String firstname
String lastname
String email
Date createdAt
}
Jetzt fehlt uns nur noch ein Controller, der auch von Grails anhand der Domain Klasse (unser User) generiert werden kann.
grails generate-all
...
input-domain-class:
[input] Enter domain class name:
user
...
Danach befindet sich im Verzeichnis grails-appcontrollers
die Datei UserController.groovy
mit dem Gerüst der Controller – Klasse. Zum Testen empfiehlt es sich aber auf die ScaffoldingFunktionen von Grails zurückzugreifen, die die Applikation dynamisch zur Laufzeit generieren.
class UserController {
def scaffold = User
}
Dank der mitgelieferten HypersonicSQL Datenbank und dem Servlet Container Jetty kann man nach dem Absetzen des Kommandos grails run-app
unter der Url http://localhost:8080/usermanagement/user
seine fertige Webapplikation testen.
Wer jetzt zum ersten mal scaffolding in Aktion gesehen hat, der möchte am liebsten nur noch damit arbeiten, weil es so schön einfach und bequem ist. Leider können deutschsprachige Anwender, meist wenig mit englischen Feldbezeichnungen anfangen, so dass diese Funktion nur den Formularen vorbehalten bleibt, die der Anwender nicht zu Gesicht bekommt.
Im nächsten Beitrag werde ich mich der Konfiguration der Datenbankverbindung widmen.
Danke für das nette Tutorial.