1

ビルドを別のディレクトリに出力してターゲットにする必要があります。

project.build.directoryoutputおよびtestOutputDirectoryプロパティを使用すると、を使用してコマンド ラインから正しく動作しますmvn clean installが、Eclipse からビルドすると、ディレクトリがある場合は空のtarget/test-classesディレクトリが作成されますsrc/test/resources

同じ動作をする単純な pom ファイルは次のようになります。

<project>
    <groupId>com.example</groupId>
    <version>1.0.0</version>    
    <modelVersion>4.0.0</modelVersion>
    <artifactId>reproduce</artifactId>
    <packaging>war</packaging>
    <properties>
        <project.build.directory>differentTarget</project.build.directory>
        <project.build.outputDirectory>${project.build.directory}/classes</project.build.outputDirectory>
        <project.build.testOutputDirectory>${project.build.directory}/different-test-classes</project.build.testOutputDirectory>
    </properties>

    <build>
        <directory>${project.build.directory}</directory>
        <outputDirectory>${project.build.outputDirectory}</outputDirectory>
        <testOutputDirectory>${project.build.testOutputDirectory}</testOutputDirectory>
    </build>
</project>

私のディレクトリ構造は次のようになります。

   |-src
   |---main
   |-----webapp
   |-------WEB-INF
   |---test
   |-----resources

<web-app />動作を再現できる最も簡単な方法は、内部にある web.xml を除いて、すべてのディレクトリを空にすることです。

実際のテスト クラスがあると、target/test-classesディレクトリ内にフォルダーが作成されますが、実際のクラス ファイルはdifferentTarget/test-classes.

DebianでEclipse Indigom2e 1.2.0、およびMaven Integration for WTP 0.15.3を使用しています

編集

を削除しpropertiesて出力をハードコードすると、次のようになります。

<build>
    <directory>differentTarget</directory>
    <outputDirectory>differentTarget/classes</outputDirectory>
    <testOutputDirectory>differentTarget/different-test-classes</testOutputDirectory>
</build>

次に、 Maven > Update Project...に移動すると正しい動作が得られますが、 Project > Cleanに移動するか、さらに重要なことにBuild Automaticallyに移動すると、ターゲットフォルダーが正しくありません。

4

3 に答える 3

2

出力フォルダでJavaビルドパスを確認してみてください。m2eプラグインがすべての出力パスの更新に失敗している可能性があります。

プロジェクトを右クリック->ビルドパス->ビルドパスの構成。

[ソース]タブで各エントリを展開し、出力フォルダを編集して、各エントリをプロジェクトのデフォルトに戻します。

于 2013-01-14T01:15:17.597 に答える
1

デフォルトでは、すべてのMavenPOMはスーパーPOMを継承します。Maven Super POMを見ると、testOutputDirectoryがproject/buildの下の要素として定義されていることがわかります。プロパティとして設定するつもりだったのかわかりません。<build>セクションのすぐ下にある要素<testOutputDirectory>をオーバーライドしてみてください

于 2013-01-13T22:00:58.950 に答える
1

m2e が変更を認識しないことがあります。

プロジェクトを選択し、マウスを右クリック -> Maven -> Update Projectします。

ここに画像の説明を入力

それでも問題が解決しない場合は、.settings フォルダーを削除して、もう一度やり直してください。

編集:

ビルド セクションで使用されるプロパティを変換できない可能性があります。ハードコードしてみてください:

 <build>
    <directory>differentTarget</directory>
    <outputDirectory>differentTarget/classes</outputDirectory>
    <testOutputDirectory>differentTarget/different-test-classes</testOutputDirectory>
 </build>
于 2013-01-13T22:07:48.753 に答える