SKLTP TAK - Utveckling i Grails (TAK < 3.0)

Denna sida gäller inte för senaste versionen av TAK

Integrerad utvecklingsmiljö

 

Grails använder IVY cache istället för Maven. IFall ändringar i tak-core inte slår igenom (eller errors vid bygge med Maven) så är det bra att rensa <user-home>/.grails/ivy/se...

TODO: Nedanstående beskrivning är inte uppdaterad. GGTS-pluginet för Eclipse utvecklas inte längre och finns inte kvar i Eclipse Marketplace. Den sista Eclipseversionen som stöds av pluginet är Eclipse 4.5 Mars. (Det går ändå inte att hämta pluginet från Marketplace utan man får i så fall göra en manuell installation.) Det finns även en specialversion av Eclipse, Spring Tool Suite & Groovy/Grails Tool Suite 3.6.4. Den uppdateras inte heller längre.

Utveckling av källkoden kan göras i olika IDE:er. Ett vanligt verktyg är Eclipse. Nedanstående beskrivning beskriver uppsättning av Eclipse Kepler 4.3 för utveckling av TAK.

Ladda ned Eclipse

Eclipse kan laddas ned här. Välj lämplig distribution för ditt operativsystem, exempelvis Eclipse IDE for Java EE Developers.

När Eclipse är uppstartat behövs en särskild Groovy/Grails-plugin installeras. Detta görs via Eclipse Marketplace... (gäller Kepler 4.3, tidigare versioner kan fungera annorlunda i detta avseende).

Välj Help -> Eclipse Marketplace...

Skriv in "Grails" i sökrutan (du bör få ett resultat som nedan). Välj "Install".

I nedanstående dialog kan installationen anpassas. Bilden visar det som är nödvändigt att installera. Klicka "Confirm"

när du valt klart.

I nästa dialog (om den dyker upp) Välj "Keep my installation the same..." och klicka på "Confirm".

Pluginen installeras sedan. Installationsdialogen kommer be dig om starta om Eclipse för att förändringarna ska gå igenom.

Installera Grails-distribution i Eclipse

För att kunna köra projektet tp-vagval-admin-web inuti Eclipse behövs en Grails-distribution installeras. Denna version är för tillfället 2.5.3.

Pack upp distibutionen på lämpligt ställe. Välj Eclipse -> Preferences -> Groovy -> Grails -> Add.. vilket ger följande dialog. Mata in ett lämpligt namn och peka ut distributionen.

 

Importera tp-vagval-admin-web till Eclipse

Stå i katalogen tp-vagval-admin-web i ett terminalfönster. Skapa konfigurationsfiler för Eclipse genom nedanstående kommando: 

mvn eclipse:eclipse

Importera nu projektet i Eclipse genom File -> Import:

Välj "Existing Maven projects":

 

Välj Browse... - Peka ut projektroten för tp-vagval-admin-web - > klicka "Next"

Trots felen på nästkommande dialog (maven-license-plugin felar) så klicka på "Finish"

 

I nästa steg kan Eclipse be dig att konvertera projektet till ett Grails projekt som är konfigurerat för användning av STS Grails Tools.

Klicka "Yes".

Nu är projektet importerat till Eclipse, men några fel kan fortfarande finnas (felet med maven-license-plugin går ej att åtgärda för stunden)

Välj Maven -> Update Project... (Detta tar hand om en del fel)

Du kan också ha problem med Groovy compiler:

Detta åtgärdas genom att högerklicka på projektet tp-vagval-admin -> properties -> Groovy Compiler -> Välj 2.1 -> Klicka "Ok"

Starta upp tp-vagval-admin-web

Klicka på den gröna Grails ikonen 

Skriv in "run-app" i rutan som dyker upp och tryck Enter

 

Om allting funkar bör du få nedanstående i ditt konsolfönster

| Loading Grails 2.2.4 | Configuring classpath | Downloading: tp-vagval-admin-core-1.3.3-SNAPSHOT.pom | Downloading: tp-vagval-admin-core-1.3.3-SNAPSHOT.jar. | Environment set to development..... | Packaging Grails application..... | Running Grails application | Server running. Browse to http://localhost:8080/tak-web

tp-vagval-admin-web är nu uppsatt som ett Grails-projekt i Eclipse.

Hur köra automatiska tester

Alla automatiserade enhetstester och integrationstester går att köra via både Maven och Mule Studio utan någon infrastruktur behöver vara uppsatt.

mvn clean test

Starta TAK lokalt för test

Ibland räcker det inte med att bara utveckla med automatiska tester utan man behöver kunna starta TAK servern lokalt i sin utvecklingsmiljö, t ex för att testa Web GUI't.

För att kunna starta TAK lokalt krävs att Grails 2.5.3 finns installerat lokalt på din dator. Instruktioner och dokumentation för hur man laddar ner och installerar Grails finns på följande länk http://grails.org/ .

Verifiera med följande kommando vilken version av Grails som du har installerat

För att starta TAK lokalt och testa kan följande kommandon köras och ge resultatet Server running med adress till startsidan. 

TODO: Detta fungerar för närvarande inte (och har troligen inte fungerat sedan uppgradering till java8). Projektfiler och beskrivning behöver uppdateras... (BuildConfig.groovy behöver uppdateras med runtime plugins versioner hibernate=":hibernate4:4.3.10" och tomcat=":tomcat:7.0.55.2". Återstår att lista ut vad mer som behöver fixas) Se även 5 Configuration 2.5.3 och jämför med bef.konfiguration.

"grails run-app" ger inte rätt dependencies - starta med "mvn grails:run-app" i stället!

Öppna startsidan i en web läsare:

Logga in i lokal testmiljö med användaren admin som har lösenordet skltp. Startsidan skall nu visas:

tak-services (lokala databas)

Är en av modul under tak-parent som exponerar tjänster (SOAP). Tak-services använder inte Grails men det har skett förändringar i hur modulen konfigureras. Nedanstående beskriver uppsättning för TAK < 3.0.

Konfigurera eclipse

För att köra denna modul från eclipse integrerat tomcat miljö behöver man konvertera modul till en web-module

Konfigurera tomcat

Under Servers peka ut befintliga tomcat server på disken. Då skapar eclipse en till modul med namn 'Servers'. Öppna context.xml under Servers och lägga in en 'Resource'

Funktionella test (SOAP UI)

Importera projekt fil från tak-tests/soap-ui/tak-services-soapui-project i SOAP-UI. Skript under projekt skapar lite grunddata och tester mot denna data. 

Allmänt om Grails

Miljö

För att Grails ska fungera behöver man sätta JAVA_HOME. Viktigt att den pekar på en JDK och inte en JRE. (T.ex. "export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64", inte "export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre". Startar man via Maven så verkar inte JAVA_HOME användas.

Grailsmiljöer och testmiljöer

Blanda inte ihop Grailsmiljöerna med våra driftmiljöer!

T.ex. kan “prod” antingen syfta på Grails prod-miljö eller vår prod-driftmiljö beroende på sammanhang.

Normalt så gäller:

  • grails run-app => "dev"

  • grails test-app => "test"

  • Starta byggd war-fil => "prod"

I alla våra dev/test/qa/prod så är alltså Grailsmiljö = prod.

Beroende på miljö så används olika konfigurationer. T.ex. så används normalt en in-memory H2-databas för dev- och testmiljöerna. Vill man köra "prod" lokalt för att få en mer realistisk konfiguration så får man starta med: "mvn grails:run-app -Dgrails.env=prod" (eller “grails prod run-app” om man inte startar via Maven) .

Konfigurationsfiler

Inblandade konfigurationsfiler är en mix av Grails-, SpringBoot- och Tomcat-konfiguration. Dessa plockas främst upp automatiskt av Grails utifrån namngivningskonventioner.

  • context.xml innehåller bl.a. databaskonfiguration. Det är en extern konfigurationsfil där innehållet skiljer sig åt i våra olika miljöer. På servern ligger denna i /www/ind/etc/tak/conf/context.xml. I repot finns motsvarande i tak/resources/tomcat-conf/context.xml. För att context.xml ska användas när man kör lokalt så måste den kopieras tillfälligt till tak/tak-web/web-app/META-INF/context.xml!

  • tak-web-config.properties är också en extern konfigurationsfil med miljöberoende konfiguration. ($TAK_HOME/tak-web-config.properties) (Miljöerna i denna syftar på våra miljöer, inte Grailsmiljöer.) Filen läses in i Bootstrap.groovy. Om man pekat ut en konfigurationsfil med TAK_HOME i sin lokala miljö så behöver man komma ihåg att ta bort variabeln innan man bygger TAK, annars plockas den upp när enhetstesterna körs och bygget går inte igenom.

  • tak-core-PROD.xml (tak/tak-core/src/main/resources/tak-core-PROD.xml) Innehåller bland annat diverse databaskonfigurering. Motsvarande filer finns för andra miljöer.

  • tak-core-config.xml Inkluderas av miljöberoende konfigfiler

  • Config.groovy (tak/tak-web/grails-app/conf/Config.groovy) Diverse konfig.

  • DataSource.groovy (tak/tak-web/grails-app/conf/DataSource.groovy) Diverse databaskonfig. En del är utkommenterat och verkar ha ersatts av motsvarande i context.xml.

  • BootStrap.groovy (tak/tak-web/grails-app/conf/BootStrap.groovy) Diverse konfig (främst för att fylla på testdata i Grails dev- och test-miljöer).

 

Loggning

För att få lite mer loggning när man labbar lokalt kan man tillfälligt ändra några "error" till "debug" i Config.groovy. Dessa loggar hamnar i tak/tak-web/target/tomcat/logs/tak-web.log.

Skapa Grailsprojekt

Vill man skapa ett nytt Grailsprojekt för att labba och jämföra så kan det göras enlig beskrivning på:
https://www.vogella.com/tutorials/Grails/article.html (Gäller Grails 2.x så det fungerar på motsvarande sätt som nuvarande TAK-implementation, men inget vi ska titta på för framtida uppdateringar.)
För att se vilken konfiguration som behöver ändras för att byta databas från H2 till MySql kan man kolla på How do I connect to mysql database in Grails?
Kör projektet med "grails run-app" (utan Maven, se även till att JAVA_HOME är korrekt satt). (Ange även miljöswitch om annan miljö än “dev“ önskas.)