2009-05-14 7 views
3

私はAppfuse Archetypeからアプリケーションを作成しようとしていますが、奇妙な問題が発生します。一度私は自動ユニットテストと統合テストのためのhsqldbを使用したいと思います。私が必要なときにデータを簡単に操作できるように私の手動テストのためのmysqlデータベースを使用しています。テスト段階。それを行う方法はありますか?テストフェーズで別のMavenプロファイルを使用する

答えて

7

これがあなたが求めているものなのかどうかは分かりませんが、Mavenプロジェクト用に複数のフィルタを設定するには、次の操作を行うことができます。

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

セットアップ複数のプロファイルを使用してことができますこの方法:

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

あなたは、その後使用して、関連するプロパティファイルでビルドを実行することができます。

mvn -P <profile id> 

これは位置プロパティファイルを持つ必要となりますat:

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

これは確かにプロパティファイルをmavenの実行からmavenの実行に切り替えるための良い方法ですが、私はもっと細かいことを望んでいました。 mvn clean jettyを実行したい: などを実行し、テストプロファイルからのプレースホルダをリソースに埋め込み、テストが終了したら自動的に別のプロファイルに切り替えたいプレースホルダを置き換えてから、桟橋サーバーを起動します。 基本的に私はユニットテストを別のデータベース設定で実行したい:-) – cdecker

+0

Mavenのライフサイクルのさまざまな段階で異なるプロファイルを使用したいのですが?私はそれが可能かどうかはわかりませんが、他の人が答えるかどうかはわかります。 –

+0

同じ実行の異なるフェーズに異なるプロファイルを使用することはできません。私は2.0.3日以来この問題にぶつかってきました。私はmvn -PlocalTestクリーンパッケージでこれを回避します; mvn -PfullBuildクリーンパッケージデプロイメント。 – sal

2

これがまったく役に立たないのかどうかはわかりませんが、/ src/test/resourcesフォルダーに/ src/main/resources内のリソースファイルを上書きする代替リソースファイルを指定することができます。

ここでは、代わりのplaceholders.propertiesファイルを定義して、テストフェーズで使用される別のdb接続を指定します。