Page History
...
Projektstruktur .................................................................................................................................................. 3
Releases ............................................................................................................................................................. 4
Tests ................................................................................................................................................................... 4
Indledning
Dette dokument beskriver hvordan man kommer i gang med at tilpasse eller videreudvikle SOSI-GW ud fra kildeteksten.
...
SOSI-GW afhænger af en lang række af andre open source projekter.
Til at styre disse afhængigheder benyttes "Ivy", som er et Ant-plugin (se {+}http://ant.apache.org/ivy+[ |http://ant.apache.org/ivy]for mere information). Konfiguration af Ivy og basal build-struktur hentes fra projektet "trifork-common", som er inkluderet i SOSI-GW-projektet. Det forventes at der findes Java (>= 1.5.0) og Ant (>= 1.7.0) i omgivelsen.afhængigheder og byg af WAR fil bruges maven.
SOSI-GW
SOSI-GW projektet ligger på nspop svn-repository på følgende adresse: {+}https://svn.nspop.dk/svn/trifork/sosi+-gw/trunk/[ |https://svn.nspop.dk/svn/trifork/sosi-gw/trunk/]
Miljøvariablen "JAVA_HOME" skal være sat og pege på det JDK, der svarer til den Java, der er den aktive. Det er ikke tilstrækkeligt med et JRE. (Eksempel: export JAVA_HOME=/usr/lib/jvm/java-6-sun)
Udfør "ant" i projektet. Dette henter en hel række open source projekter fra nettet og bygger projektet. Herefter kan Eclipse åbne projektet, med alle dependencies på deres rette plads. Bemærk, at hvis projektet åbnes i Eclipse før Ant er kørt, vil der være fejl i projektet. Disse fejl forsvinder efter Ant er kørt.components/sosigw/trunk/
Projektstruktur
SOSIGW-projektet er et Eclipse-projekt, og har følgende struktur:
src/main/java | Indeholder kildekode samt statisk konfiguration og andre ressource-filer |
src/test/java | Indeholder unit- og integrationstests |
|
|
doc/ | Indeholder al dokumentation på nær Javadoc, som kan genereres via ant javadoc. |
etc/ | Indeholder filer, der anvendes i forbindelse med byggeprocessen, f.eks. XML-skemaer- WSDL-filer mv. Etc-legacy indeholder filer, som er flyttet med fra forrige kodebase. Og som evt. kan slettes ved næste release. |
launch/ | Indeholder launchere, der kan anvendes i forbindelse med udvikling af GWT i Hosted Mode |
build-lib/ | Indeholder de jarfiler, projektet benytter sig af. Bemærk at dette bibliotek laves automatisk af Ant, og det skal ikke ligge i Subversion |
...
De jar filer som projektet har afhængigheder til findes i diverse maven repositories. | |
target/ | Indeholder alt der genereres i forbindelse med byggeprocessen, dvs kompilerede filer, genererede source-filer og andre artefakter. Dette dir skal heller ikke ligge i Subversion. |
|
...
src/main/webapp/ | Indeholder de filer, der skal pakkes med i den færdige war-fil på nær class- og jar-filer |
...
ChangeLog | Beskriver hvilke ændringer, der er sket i de forskellige versioner. |
Releases
Et nyt release laves ved først at opdatere ChangeLog-filen med ændringerne fra sidste release. Herefter checkes det at projektet kan bygges og at alle tests kører uden fejl. Herefter køres release.sh med det nye versionsnummer som argument, f.eks. ./release.sh 1.0.5. Hvis der releases til nsp køres scriptet nsprelsease.sh, ligeledes med versionsnummer.
Udvikles der under Windows kan release foretages manuelt med følgende trin:
- Lav en svn update for at sikre, at den seneste version er hentet.
- Lav et nyt tag i SVN baseret på trunk, der hedder vx.y.z hvor x.y.z er det nye versionsnummer.
- Kør ant clean
- Pak projektet til en tar.gz-fil, der hedder sosigw-x.y.x.tar.gz
- Placer denne fil i svn under releases
- Kør ant for at bygge en war-fil
- Omdøb war-filen (som ligger under target) til sosigw-x.y.z.war
- Placer war-filen sammen med tar.gz-filen i svn
Tests
Maven
Koden kan bygges med kommandoen
Code Block | ||
---|---|---|
| ||
mvn install |
Docker
Koden kan afvikles lokalt med kommandoen
Code Block | ||
---|---|---|
| ||
docker-compose -f compose/development/docker-compose.yml up --build |
Jenkins
Koden kan bygges vha. Jenkins
https://jenkins.nspop.dk/job/SOSIGW/
Og man kan også pushe byg til Nexus.
Releases
Når koden skal releases, så skal man første have tjekket alle rettelser ind på trunk. Derefter skal man afvikles kommandoen
Code Block | ||
---|---|---|
| ||
maven release:prepare |
Tests
Unittest afvikles når koden bygges med maven kommando. Man kan også afvikles selvstændigt med kommandoen
Code Block | ||
---|---|---|
| ||
mvn test |
Integrationstests er endnu ikke flyttet til mavenUnit- og integrationstests er placeret under test/, og følger den samme pakkestruktur som de klasser der testes. Der anvendes normal Junit 3 til at implementere tests.
Tests kan køres på to måder: Enten via Ant (ant test) eller via Eclipse. I Eclipse højreklikkes på test og under Run As vælges Unit Test.
Så vidt muligt navngives testmetoder efter deres hensigt – dvs. f.eks. testConditionShouldBeTrue() i stedet for test1().
Når tests køres via Ant laves der desuden coverage måling via Clover. Coverage-rapporter kan genereres med Ant coverage-report, som derefter kan findes under target/coverage.