Maven HSQLDB in den Maven lifecycle einbinden

hemeroc

Bekanntes Mitglied
Ich habe ein Projekt in dem ich eine RichClientApplication mit Maven "builde".
Nun brauche ich beim Testen aber eine laufende Testdatenbank das heißt ich möchte folgendes in meinen build lifecycle einbetten:
- vor dem Test: HDQLDB Server startet die Testdatenbank
-- Tests laufen durch
- nach dem Test: HSQLDB Server wird beendet

Ich habe nun versuch mittels maven exec plugin den HSQLDB Server zu starten:

[XML]
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>StartTestDatabase</id>
<phase>test</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>org.hsqldb.server.Server</mainClass>
<arguments>
<argument>--database.0</argument>
<argument>file:target/data/shopdb</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
[/XML]

Das führt aber dazu das der HSQLDB Server während der Testphase den kompletten build blockiert "Hit CTRL+C to stop the Server", außerdem sehe ich auch keine Möglichkeit den Server danach zu stoppen.

Ich bin für Vorschläge oder auch alternative Herangehensweise (BestPractice) dankbar. Wichtig ist dabei nur es muss HSQLDB sein und das der Server manuell gestartet wird ist keine Option. Außerdem sollte das ganze rein über maven wartbar bleiben sprich kein JavaSourceCode wenn möglich.

Liebe Grüße
Hemeroc
 
Zuletzt bearbeitet:
N

nillehammer

Gast
Ich bin für Vorschläge oder auch alternative Herangehensweise (BestPractice) dankbar.
1. Arbeite mit profiles (bspw. development, integration, production) und mit abhängig vom profile gefilterten Resourcen. Damit kannst Du für jedes profile angepasste Datasources oder jdbc-Urls konfigurieren.
2. Im profile development lässt du die HSQLDB embedded laufen. Dann muss sie garnicht gestartet werden.
 

hemeroc

Bekanntes Mitglied
Das habe ich eigentlich mit
Außerdem sollte das ganze rein über maven wartbar bleiben sprich kein JavaSourceCode wenn möglich.
gemeint, nun muss ich zusätzlich zu den maven files auch javaCode warten der sich aber eigentlich nur um die Umgebung kümmert, das wollte ich gezielt vermeiden.

Ausgehend von deinem Lösungsansatz:
Wenn ich dann im production/integration bin um ein deployment zu machen will ich doch auch, dass die Tests durchlaufen, da die Tests nie auf der Produktivdatenbank laufen sollen habe ich hier wieder das selbe Problem oder ich versteh irgendwie nicht ganz wie du das mit den profiles meinst.

Liebe Grüße
Hemeroc
 
N

nillehammer

Gast
oder ich versteh irgendwie nicht ganz wie du das mit den profiles meinst.
Ich hatte Dir zunächst nur die Stichpunkte genannt, nach denen Du bei Maven suchen musst. Selbstverständlich ist das alles rein Maven-basiert und es muss kein Java-Code angepasst werden.

Mit den profiles sagst Du Maven, welche Umgebung Du gerne hättest. Dein Programm startet und will sich nun mit der DB verbinden. Irgendwo hast Du die dafür nötige JDBC-URL ja stehen. (Ich hoffe nicht hart im Quellcode. Das wär schlecht). Normalerweise also in irgend einer properties-, xml-, ini- oder sonstwas Konfiugrationsdatei. Das ist die Resource. Abhängig vom gewählten Profil müsste man dynamisch die richtige JDBC-URL in diese Datei schreiben. Das nennt man filtern. Und Maven kann das alles. Suche nach den Stichpunken "Maven profiles" und "Maven resource filtering" und Du findest alles, was Du brauchst
 

hemeroc

Bekanntes Mitglied
Der Zusammenhang mit den resource filtering war mir nicht ganz klar, ich habe die jdbc url natürlich nicht hardcoded sondern injecte sie mittels Spring.
Aber das starten des Datenbankservers im embedded mode erfordert, dass ich das in Java schreibe.
Java:
import org.hsqldb.Server;
//...
hsqlServer = new Server();
//...
hsqlServer.start();
und genau das ist es was ich ja eigentlich vermeiden wollte, da nicht sichergestellt ist, das es sich bei der Testumgebung immer um eine HSQLDB Datenbank handelt deshalb injecte ich ja auch die jdbc url und den JDBCTreiber. Daher möchte ich den Testserver falls ein HSQLDB-Server benötigt wird eben auch über maven starten. Ziel ist es die komplette Testumgebung wechseln zu können ohne eine Zeile am Testcode hinzuzufügen oder zu verändern.

LG Hemeroc
 

kama

Top Contributor
Hallo,

zuerst einmal fällt mir auf, dass Du beim exec-plugin das java Goal verwendest, was nun mal in der gleichen VM läuft wie Maven, was selbstverständlich nicht funktionieren kann. Du musst das Goal "exec" verwenden, um eben einen anderen Prozess zu starten in dem die DB läuft...

Abgesehen davon sind die Tests hier korrekterweise Integrationstest und keine Unit Tests. Damit ist es nicht die Aufgabe von maven-surefire-plugin sondern vom maven-failsafe-plugin.

Dazu gibt es dann die Phase pre-integration-test, integration-test und post-integration-test....

Ich würde hier ein separated Maven Module applikation-it-hsqldb machen in dem alles für die HSQLDB konfiguriert wird und während der IntegrationsTests phase eben der Server gestartet wird...
Wenn Du eine andere DB nutzen möchtest mach ein module applikation-it-was-auch-immer-für-eine-DB ...
Diese Module werden dann einfach mithilfe eines Profile entsprechend aktiviert...

Code:
+-- applikation
       +-- pom.xml 
       +--- mod1..
               +-- pom.xml 
       +--- applikation-it-hsqldb
              +-- pom.xml 
       +--- ....

so dann sieht das Root-Pom ausschnitsweise so aus:

[xml]
<modules>
<module>mod1</module>
<module>applikation-it-hsqldb</module>
<module>...
</modules>
[/xml]

Gruß
Karl-Heinz Marbaise
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Applet, xxx.jar und hsqldb Tools - Maven, Gradle, Ant & mehr 4
Oneixee5 Maven deploy - per SSH Tools - Maven, Gradle, Ant & mehr 6
H Maven kein Hauptmanifestattribut Tools - Maven, Gradle, Ant & mehr 10
M Programm mit Maven erstellen und starten samt Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 27
D Interne Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 51
J log4j2 mit Hibernate über Maven Tools - Maven, Gradle, Ant & mehr 10
thor_norsk Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf IntelliJ IDE starten Tools - Maven, Gradle, Ant & mehr 8
H Maven JUnit5 Tests werden ignoriert Tools - Maven, Gradle, Ant & mehr 5
thor_norsk Maven Tools - Maven, Gradle, Ant & mehr 32
ExceptionOfExpectation Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf Eclipse starten Tools - Maven, Gradle, Ant & mehr 20
Ich kann Maven nicht als UmgebungsVariable hinzufügen Tools - Maven, Gradle, Ant & mehr 2
F Maven JAR Plugin Probleme Tools - Maven, Gradle, Ant & mehr 4
W Was "braucht" man denn alles? Maven, Ant, Git, ... Tools - Maven, Gradle, Ant & mehr 21
N Fehler beim Imgui mit Maven Tools - Maven, Gradle, Ant & mehr 7
M Spring Boot Maven pom.xml-Eintrag Tools - Maven, Gradle, Ant & mehr 17
Encera JavaFX und Maven funktioniert nicht Tools - Maven, Gradle, Ant & mehr 1
B maven multi module Projekt und unnötige/zusätzliche Leerzeilen Tools - Maven, Gradle, Ant & mehr 4
J Maven Konfusion Tools - Maven, Gradle, Ant & mehr 7
Tippster Maven Sqlite integrieren (Eclipse, Maven) Tools - Maven, Gradle, Ant & mehr 4
T Image kreieren mit Maven bei JavaFX und nicht modularen Jars Tools - Maven, Gradle, Ant & mehr 12
T JSON Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 7
T JavaFX, Jar über Maven kreieren Tools - Maven, Gradle, Ant & mehr 2
Encera Libraries Maven Projekt hinzufügen Tools - Maven, Gradle, Ant & mehr 9
Oneixee5 Maven Phase Tools - Maven, Gradle, Ant & mehr 3
Robertop maven copy-resources nicht in WAR Datei Tools - Maven, Gradle, Ant & mehr 2
T Maven: Probleme beim Einbinden der Dependencies Tools - Maven, Gradle, Ant & mehr 9
M Mit Maven eine jar Datei bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 1
M Mit Maven eine jar Datei Bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 18
H Maven Maven: <mainClass>NAME?</mainClass> Tools - Maven, Gradle, Ant & mehr 13
H Maven maven-source-plugin is missing Tools - Maven, Gradle, Ant & mehr 5
M Missing Artifact on selbst gehostestes Maven Paket Tools - Maven, Gradle, Ant & mehr 8
M Error code 409 maven Tools - Maven, Gradle, Ant & mehr 5
M github + maven Fehler beim repository erstellen Tools - Maven, Gradle, Ant & mehr 1
M durch Maven wird "var" nicht gefunden Tools - Maven, Gradle, Ant & mehr 4
N Maven Intellij Maven Projekt erstell keine src Tools - Maven, Gradle, Ant & mehr 4
LimDul Maven Einzelne Unit Tests in Maven Builds skippen Tools - Maven, Gradle, Ant & mehr 3
M Maven jpackage-image wird nicht gefunden Tools - Maven, Gradle, Ant & mehr 22
M javafx wird in einem alten programm nicht bei maven gefunden Tools - Maven, Gradle, Ant & mehr 15
L Maven IntelliJ, Maven und JavaFX + SceneBuilder Tools - Maven, Gradle, Ant & mehr 23
von Spotz Maven und Spring: "Add to classpath" ? Tools - Maven, Gradle, Ant & mehr 29
Kirby.exe Projekt mit Maven kompilieren Tools - Maven, Gradle, Ant & mehr 13
P Maven Projekt Abhängigkeiten auf bekante Schwachstellen prüfen Tools - Maven, Gradle, Ant & mehr 4
H Maven dependency Problem ? Tools - Maven, Gradle, Ant & mehr 23
B Maven und Intellij Tools - Maven, Gradle, Ant & mehr 24
P Maven Test werden nicht ausgeführt . Junit . Maven . Surefire . Eclipse Tools - Maven, Gradle, Ant & mehr 12
yakazuqi Maven Eigene API mit Maven einbinden Tools - Maven, Gradle, Ant & mehr 1
M Was ist besser für den Anfang, Maven oder Gradle? Tools - Maven, Gradle, Ant & mehr 6
P Maven Wie die Maven Project version in JSP page verwenden? Tools - Maven, Gradle, Ant & mehr 2
C Maven Multi-Module Projekt Tools - Maven, Gradle, Ant & mehr 2
T Maven Warnings/Fehlermeldungen Tools - Maven, Gradle, Ant & mehr 12
T Maven und Datenbank(treiber) Tools - Maven, Gradle, Ant & mehr 13
T Maven Runnable Jar Tools - Maven, Gradle, Ant & mehr 5
T Grundlagen Maven und Git/Github Tools - Maven, Gradle, Ant & mehr 2
LimDul Maven Maven Surefire Plugin - Warnings upgrade Tools - Maven, Gradle, Ant & mehr 2
G Maven upload Tools - Maven, Gradle, Ant & mehr 0
K Maven - Parent oder Dependency? Tools - Maven, Gradle, Ant & mehr 5
B Maven Maven deploy Tools - Maven, Gradle, Ant & mehr 4
H Jenkins keine Tests gefunden - aber in Maven Tools - Maven, Gradle, Ant & mehr 30
P Mit Maven einen spezifischen Branch nach Tag-Parameter erstellen (in Jenkins-Job) Tools - Maven, Gradle, Ant & mehr 3
P Nur einen Teilbaum in Maven releasen? Tools - Maven, Gradle, Ant & mehr 7
D Cannot invoke "javafx.scene.control.MenuButton.getScene()" nach konvertierung zu maven Tools - Maven, Gradle, Ant & mehr 3
H Maven - keine Durchführung von Tests Tools - Maven, Gradle, Ant & mehr 12
H Jenkins - maven-jar-plugin - kein jar-file Tools - Maven, Gradle, Ant & mehr 38
P JavaFX jar mit Maven Tools - Maven, Gradle, Ant & mehr 9
P Maven & Intellij Modul kann nicht aufgelöst werden Tools - Maven, Gradle, Ant & mehr 12
H Eclipse JUnit erzeugt Fehler im Maven-Test Tools - Maven, Gradle, Ant & mehr 1
H Maven Anfängerproblem - No plugin found for prefix 'archetype' in the current project and in the plugin groups Tools - Maven, Gradle, Ant & mehr 25
sascha-sphw Maven vs Gradle Tools - Maven, Gradle, Ant & mehr 24
D Maven Maven und die Build-Geschwindigkeit Tools - Maven, Gradle, Ant & mehr 11
K Maven IntelliJ + Maven + JavaFX Tools - Maven, Gradle, Ant & mehr 2
J Maven Mit Maven eine ZIP Datei erstellen Tools - Maven, Gradle, Ant & mehr 0
K Maven install schlägt fehl Tools - Maven, Gradle, Ant & mehr 10
I Problem: Maven import extern Lib Tools - Maven, Gradle, Ant & mehr 3
Tom299 Maven Maven funktioniert nach Installation nicht Tools - Maven, Gradle, Ant & mehr 1
I Maven Interface hinzugefügt - Error Tools - Maven, Gradle, Ant & mehr 1
M Verständnisfrage Maven Tools - Maven, Gradle, Ant & mehr 2
S Maven installieren - "Befehl wurde nicht gefunden" Tools - Maven, Gradle, Ant & mehr 1
E Maven: Wie Abhängigkeiten analysieren? Tools - Maven, Gradle, Ant & mehr 0
E Maven Maven distributionManagement Vererbung in child POM Tools - Maven, Gradle, Ant & mehr 8
P Maven Parent- Child POMs Tools - Maven, Gradle, Ant & mehr 13
E Release Kandidaten mit Maven bauen Tools - Maven, Gradle, Ant & mehr 4
C Orderstruktur bei Libarys - Wie mit Ant oder Maven lösen? Tools - Maven, Gradle, Ant & mehr 0
G Maven, finde Dependency nicht... Tools - Maven, Gradle, Ant & mehr 2
G Maven Continious Integration mit Jenkins, Maven und Nexus - wie richtig? Tools - Maven, Gradle, Ant & mehr 1
P Maven Parent und Child Poms - dependencies Tools - Maven, Gradle, Ant & mehr 1
reibi Maven Maven + Eclipse Tools - Maven, Gradle, Ant & mehr 0
P Maven add resource Tools - Maven, Gradle, Ant & mehr 0
D [Maven Pluginentwicklung] - Plugin das nur auf Parent pom läuft Tools - Maven, Gradle, Ant & mehr 0
S Maven Maven und Auflösen von JSF EL Tools - Maven, Gradle, Ant & mehr 5
S Maven Unterschiedliche Deployments mit Maven Tools - Maven, Gradle, Ant & mehr 2
S Maven buildnumber-maven-plugin / Formatproblem mit timestamp Tools - Maven, Gradle, Ant & mehr 17
P Erzeugen von WebServices mit Maven und Eclipse (external Tool) Tools - Maven, Gradle, Ant & mehr 2
aze Maven downgraden von 3.x auf 2.09 unter Linux Tools - Maven, Gradle, Ant & mehr 4
Rudolf JSF und Maven mit Eclipse Tools - Maven, Gradle, Ant & mehr 5
M Maven-Dependency kann nicht gefunden werden Tools - Maven, Gradle, Ant & mehr 2
M Maven imports aus Modulen Tools - Maven, Gradle, Ant & mehr 4
P multimodul maven in SVN Tools - Maven, Gradle, Ant & mehr 3
D [Maven] neuerdings "No plugin found for prefix ..." errors Tools - Maven, Gradle, Ant & mehr 7
C Automatisches Deployen in ein externes Maven Repository. Tools - Maven, Gradle, Ant & mehr 5
D JUnit Test in Maven fail und in Eclipse erolgreich Tools - Maven, Gradle, Ant & mehr 4

Ähnliche Java Themen

Neue Themen


Oben