6

Maven プロジェクトのさまざまなフォルダーをテストしたいのですが、maven のproject.build.testSourceDirectoryプロパティを変更する必要があります。

この問題には Maven プロファイルを使用しています。

私のプロフィールは次のようになります。

<profiles>
    <profile>
        <id>sahi_UI_testing</id>
        <activation>
            <property>
                <name>sahiTesting</name>
                <value>true</value>
            </property>
        </activation>
        <properties>
            <maven.test.skip>false</maven.test.skip>
            <project.build.testSourceDirectory>src/test/java/org/package1/package2/sahi</project.build.testSourceDirectory>
        </properties>
    </profile>
</profiles>

project.build.testSourceDirectory変更されず、デフォルトのままです/home/username/workspace/projectName/core/src/test/java(これをテストしてmaven-antrun-pluginそのパスを提供しました)。
プロジェクトに複数の pom.xml があるため、パスには ../core/.. フォルダーがあります (これはプロジェクトのコア pom.xml です)。


maven-antrun-プラグイン:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.1</version>
    <executions>
        <execution>
            <phase>validate</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <echo>******** Displaying value of property ********</echo>
                    <echo>${project.build.testSourceDirectory}</echo>
                    <echo>${maven.test.skip}</echo>
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>


[INFO] Executing tasks [ echo] * * Displaying value of property * * [echo] /home/username/workspace/ projectName /core/src/test / java [ echo ] truemvn help:active-profiles -f core/pom.xml -Dtest=JavaClientTest -o -e test -DsahiTesting=truewith this [INFO] Executing tasks [echo] * * Displaying value of property * * [echo] /home/username/workspace/ projectName /core/src/test/java [echo] false<maven.test.skip>true</maven.test.skip>maven-antrun-plugin





<maven.test.skip>false</maven.test.skip>maven-antrun-plugin





したがって、別の変数が変更されたことがわかります。

私はmaven-help-pluginこれを特定していたので、プロファイルがアクティブ化されたことを知っています。
次のmaven-help-plugin結果が得られます:
次のプロファイルがアクティブです:

  • sahi_UI_testing (ソース: pom)

タグ project.build.testSourceDirectoryのみでプロパティを変更するために、mavenのプロファイルなしで試しました。<build>

...
<build>
    <testSourceDirectory>src/test/java/org/package/package2/sahi</testSourceDirectory>
    ...
</build>

そこでプロパティが変更されました(ただし、そのプロパティに複数の値を割り当てる必要があります)。私も試してみましたが、うまくいきmaven-surefire-pluginません。

問題はproject.build.testSourceDirectory、プロファイルを使用するときに変更されないのはなぜですか?

4

2 に答える 2

5

この質問に対するあまり良い解決策は見つかりませんでしたが、それは解決策です。私にとっては機能しており、testSourceDirectory変数が変更されます。

ファイルでは、タグのデフォルト値で初期化pom.xmlされた独自の変数を宣言しました。propertiestestSourceDirectory

<project ...>
    ...
    <properties>
        <myTestSourceDirectory>${project.basedir}/src/test/java</myTestSourceDirectory>
        ...
    </properties>
    ...
</project>

私のプロフィールは次のとおりです。

<profiles>
    <profile>
        <id>sahi_UI_testing</id>
        <activation>
            <property>
                <name>sahiTesting</name>
                <value>true</value>
            </property>
        </activation>
        <properties>
            <maven.test.skip>false</maven.test.skip>
            <myTestSourceDirectory>src/test/java/org/<package1>/<package2>/sahi</myTestSourceDirectory>
        </properties>
    </profile>
</profiles>

buildタグの開始時に、に設定しtestSourceDirectoryました

<project ...>
    <build>
        <testSourceDirectory>${myTestSourceDirectory}</testSourceDirectory>
        ...
    <build>
    ...
</project>

したがって、プロファイルを使用しない場合、myTestSourceDirectory変数にはデフォルト値があり、プロファイルを使用する場合、変数は要求されたテスト ディレクトリに変更されます。変数は常に存在し、buildタグでtestSourceDirectoryプロパティを目的の値に変更します。

于 2013-10-03T08:20:02.173 に答える