Mein bevorzugtes Webframework Grails wurde in der Version 3 mit einem neuen Unterbau versorgt. Es basiert jetzt auf dem Buildsystem Gradle und Spring Boot.
Doch was muss man bei der Migration von Grails 2 Applikationen beachten? Michael Plöd hat auf der Groovy und Grails eXchange 2015 einen Vortrag zu diesem Thema gehalten.
Ich möchte seine Empfehlungen an dieser Stelle kurz zusammenfassen und meine Erfahrungen schildern.
- Warten bis die wichtigsten Plugins migriert sind. Alle Grails 3 Plugins befinden sich jetzt auf bintray.com
- warten gehört nicht zu meinen Stärken und so musste ich diese Lektion auf die schmerzhafte Art lernen. Es hat mich viel Zeit und Nerven gekostet die nach der Veröffentlichung von Grails 3 noch nicht migrierten Plugins spring-security-core und spring-security-ldap zu integrieren. Kurz nachdem ich dieses Tal der Schmerzen durchschritten hatte, wurden beide Plugins migriert.
- Dateien und Verzeichnisse liegen an anderen Orten
- es dauert bis man sich an die neue Struktur gewöhnt hat, besonders die Umstellung auf die YAML basierte Konfiguration
grails-app/conf/application.yml.
Diese ist allerdings optional und kann in einem ersten Schritt in der bekannten Groovy Notation in der Dateigrails-app/conf/application.groovy
vorgenommen werden.
- es dauert bis man sich an die neue Struktur gewöhnt hat, besonders die Umstellung auf die YAML basierte Konfiguration
- Logback wird als neues logging framework genutzt
- Das Logging wird jetzt ausschließlich in der Datei
grails-app/conf/logback.groovy
konfiguriert.
- Das Logging wird jetzt ausschließlich in der Datei
- before und after interceptors wurden entfernt
- Interceptors habe ich bis jetzt nicht verwendet, sie können aber durch standalone interceptors ersetzt werden
- führe die Migration nicht in der Grails 2 Applikation durch
- Diese Empfehlung kann ich nur bestätigen. Stattdessen sollte man mit einer neuen Grails 3 Applikation
grails create-app --profile=web
starten und dann src, grails-app und test nacheinander in diese übernehmen. Danach sollten die BuildConfig, die URLMappings, die Config, die DataSources, der BootStrap und die Log Konfiguration in die neue Struktur überführt werden - folgende Dateien und Verzeichnisse werden nach der Migration nicht mehr benötigt und können dann aufgeräumt werden:
grails-app/conf/DataSource.groovy lib web-app/WEB-INF/applicationContext.xml src/templates/war/web.xml web-app/WEB-INF/sitemash.xml web-app/WEB-INF/tld
- Diese Empfehlung kann ich nur bestätigen. Stattdessen sollte man mit einer neuen Grails 3 Applikation
- nach jeder Migration sollte natürlich ausführlich getestet werden
- update auf eine neue Grails 3 Minor Version
- Änderung der Version in
grade.properties
- dann aufräumen und neu kompilieren
grails clean
,grails compile
- Änderung der Version in
- Grails 3 wird leider nicht mehr durch die Eclipse basierte Entwicklungsumgebung GGTS unterstützt
- wie man Eclipse trotzdem weiter nutzen kann, habe ich im Post Grails 3 in Eclipse Mars integrieren beschrieben
[…] Migration von Grails 2 nach Grails 3 (German) (Gero Klinkmann) […]
[…] man eine Grails 2 Anwendung nach Grails 3 portiert habe ich im letzten Post beschrieben. Aber darüber reden kann man viel, besser ist ein Beispiel.Dafür muss immer meine […]