bugfix> maven > 投稿

竹のビルドプラン中にMavenテストフェーズを実行しようとしています。私のテストは、pom.xmlで設定した一連の環境変数に依存しています。ただし、これらの値は1つの環境にのみ適用され、複数の環境(異なるホストIPSなど)で同じテストを実行したいと思います。私のPom.xmlは次のようになります。

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.21.0</version>
<configuration>
 <environmentVariables>
    <variableName>variableValue</variableName>
  </environmentVariables>
</configuration>

竹プランのビルドには、単純な「mvn clean test」コマンドラインでMavenテストフェーズを実行するステージがあります。私は10個以上の環境変数を持っているので、それらの変数値を非常に長くするのでコマンドラインに渡すのを理想的には避けたいと思います。環境変数のセット(テスト用、製品用)を複数含むようにmaven surefireを構成するには、コマンドラインに渡して、実行する竹ビルドプランに応じて環境変数を取得できます。したがって、次のようになります。mvnclean -D test。

回答 1 件
  • よくある質問に対する最善の解決策は、プロファイルフィルタリングとプロパティファイルを使用することです。 次のフォルダツリーを構成する必要があります。

    src

    テスト

    java

    プロファイルリソース

    リソース

    プロファイルリソースへのリンクとして変数値を宣言して、リソースに1つのプロパティファイルを配置する必要があります。  変数= {値} また、各環境のプロファイルリソースに個別のプロパティファイルを作成する必要があります。

    次に、これをpom.xmlファイルに含めます。

     <profiles>
        <profile>
            <id>Name of first profile</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <filter.properties>env1.properties</filter.properties>
            </properties>
        </profile>
        <profile>
            <id>Name of second profile</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <filter.properties>env2.properties</filter.properties>
            </properties>
        </profile>
    </profiles>
    <build>
        <filters>
            <filter>src/test/profile-resources/${filter.properties}</filter>
        </filters>
    </build>
    
    

    その後、プロファイルをアクティブにする-P Mavenコマンドを使用して、各プロファイルを自動的に呼び出すことができます。 例:mvn verify -P "プロファイルの名前"。

    関連リソース:

    プロファイル作成の概要

    Maven 2を使用したさまざまな環境向けの構築

あなたの答え