Instruktioner för utvecklare
Innehållsförteckning | ||||
---|---|---|---|---|
|
Initial uppsättning av utvecklingsmiljön
Sätt upp utvecklingsmiljö enligt följande: Generella instruktioner för utvecklare.
...
Kodblock | ||
---|---|---|
| ||
╰─$$ git clone https://github.com/skltp/tak.git Cloning into 'tak'... $ cd tktak |
Källkoden för TAK har följande struktur med undermoduler:
- tak-parent
- tak-core - gemensamma klasser
tak-schemas - kodgenerering från tjänstekontrakt
- tak-services - web services (SOAP och REST)
- tak-web - webbgränssnitt för administration
- report - hjälpmodul för att skapa JaCoCo kodtäckningsrapport
Kontrollera att Maven använder Java 8 (mvn -v), det fungerar inte att bygga med nyare versioner.
...
Kodblock |
---|
mvn clean install |
Beroende på Maven-version och -konfiguration så kan man eventuellt stöta på "Blocked mirror for repositories" beroende på att repo.grails.org/grails/plugins hämtas via http och inte https. En snabbfix för det är att öppna Mavens settings.xml och kommentera ut maven-default-http-blocker:
Kodblock | ||
---|---|---|
| ||
<!--<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>--> |
(Bör fixas permanent på ett bättre sätt)
Integrerad utvecklingsmiljö
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.2.4 och laddas ned här.
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:
Inget format |
---|
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
Inget format |
---|
| 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.
Kodblock |
---|
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.2.4 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
Kodblock |
---|
$grails -version
Grails version: 2.2.4 |
För att starta TAK lokalt och testa kan följande kommandon köras och ge resultatet Server running med adress till startsidan.
Kodblock |
---|
$cd ...tk/trunk/tak-web
$grails run-app
| Server running. Browse to http://localhost:8080/tak-web |
Ö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).
Konfigurera eclipse
För att köra denna modul från eclipse integrerat tomcat miljö behöver man konvertera modul till en web-module
Kodblock |
---|
tak-services:> mvn eclipse:eclipse -Dwtpversion=2.0 |
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'
Kodblock |
---|
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver"
maxActive="10" maxIdle="10" maxWait="10000" name="jdbc/TP"
username="taktestuser" password="taktest" type="javax.sql.DataSource" url="jdbc:mysql://127.0.0.1:3306/taktestdb?autoReconnect=true" /> |
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.
...
Modul tak-web
Modulen tak-web är byggd med Spring Boot och Spring MVC. Det kan startas i utvecklarläge (med profilen dev) med följande kommando. Den kommer då starta upp med en H2 in-memory-databas och exponera webbgränssnittet på port 8080.
Kodblock |
---|
cd tak-web
mvn spring-boot:run |
Modul tak-services
Modulen tak-services är byggd med Spring (men inte boot) och kan därför inte startas standalone. Därför måste en applikationsserver som Tomcat finnas tillgänglig. Man kan antingen installera Tomcat på sin utvecklardator eller köra i en container, se mer info nedan.
Att köra TAK i containers med Docker Compose
Med i källkoden finns docker-compose.yml
som gör det enkelt att köra igång tak-web, tak-services samt en MySQL-databas, förutsatt att man har Docker installerat. Kör följande kommando i roten av källkodsrepot:
Kodblock |
---|
docker-compose up |
Lokal installation av MySQL och Tomcat
Som ett alternativ till att köra i containers kan Tomcat och MySQL installeras lokalt på traditionellt sätt.
När man kör i en lokal Tomcat måste konfiguration (för exempelvis databas) finns på liknande sätt som i en vanlig driftmiljö. Enklast är att sätta miljövariabeln TAK_HOME till en sökväg <repo>/resources/etc och modifiera filen tak-application.properties efter behov. Se SKLTP TAK - Konfiguration - version 3.0 och senare för detaljer.
Commit och Release
För att committa källkod på GitHub följer vi standardproceduren beskriven på: Generella instruktioner för utvecklare.
Hur göra en release
För att bygga en release följer vi standardproceduren beskriven på: Generella instruktioner för utvecklare.
Obs:
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...