2009-05-14 5 views
3

Ich versuche, eine Anwendung ausgehend von einem Appfuse Archetype zu erstellen, aber ich bekomme einige seltsame Probleme. Einmal möchte ich eine hsqldb für automatisierte Komponententests und Integrationstests verwenden, und eine mysql db für meine manuellen Tests, damit ich die Daten bei Bedarf leicht manipulieren kann. Es wäre also schön, automatisch Profile während des Tests zu wechseln Testphasen. Gibt es eine Möglichkeit, das zu tun?Verwenden Sie ein alternatives Maven-Profil während der Testphase

Antwort

7

Ich bin mir nicht sicher, ob dies genau das ist, wonach Sie fragen, aber Sie können Folgendes tun, um mehrere Filter für Ihr Maven-Projekt einzurichten.

<filters> 
    <filter>/your/path/filter-${env}.properties</filter> 
</filters> 

Auf diese Weise können mehrere Profile Setup verwenden, können:

<profiles> 
    <profile> 
    <id>local</id> 
    <properties> 
     <env>local</env> 
    </properties> 
    </profile> 
    <profile> 
    <id>test</id> 
    <properties> 
     <env>test</env> 
    </properties> 
    </profile> 
</profiles> 

Sie können dann den Build mit der entsprechenden Eigenschaft Datei ausgeführt werden:

mvn -P <profile id> 

Dies würde mit Eigenschaftsdateien erfordern befindet um:

/your/path/filter-local.properties 
/your/path/filter-test.properties 
+0

Während dies sicherlich ein guter Weg ist, um Property-Dateien von Maven-Ausführung zu Maven-Ausführung zu wechseln, hatte ich auf etwas detaillierteres gehofft. Ich möchte einfach mvn sauberen Anlegesteg ausführen: run oder ähnlich und dann Ressourcen sind mit Platzhaltern, die aus dem Testprofil kommen gefüllt, dann, wenn die Tests durchlaufen, möchte ich automatisch zu einem anderen Profil, dass wird dann verwendet, um die Platzhalter zu ersetzen und dann den Anlegestegserver zu starten. Grundsätzlich möchte ich die Komponententests auf einer anderen Datenbankkonfiguration ausführen :-) – cdecker

+0

Ich sehe - also möchten Sie verschiedene Profile für verschiedene Phasen des Maven-Lebenszyklus verwenden? Ich bin mir nicht sicher, ob das möglich ist, aber wir werden sehen, ob jemand anderes antwortet. –

+0

Sie können nicht unterschiedliche Profile für verschiedene Phasen desselben Laufs verwenden. Ich bin seit 2.0.3 Tagen auf dieses Problem gestoßen. Ich bekomme das mit mvn -PlocalTest clean package, mvn -PfullBuild clean package deploy. – sal

2

Nicht sicher, ob dies Ihnen überhaupt helfen kann, aber Sie können alternative Ressourcendateien im Ordner/src/test/resources angeben, die die in/src/main/resources überschreiben, wenn nur Tests ausgeführt werden.

Ich definiere hier eine alternative Datei namens placeholders.properties, um eine andere db-Verbindung anzugeben, die von der Testphase verwendet werden soll.

Verwandte Themen