0

ビルド管理に maven を使用する Java アプリケーションがあります。

生成されたアプリケーションjarを実行すると

java -jar myjar

アプリケーションによって生成された出力ファイルは、プロジェクトのルート ディレクトリに配置されます。したがって、/my/project/dir で jar を実行し、logs/mylog に書き込むファイルライターを作成すると、

結果のファイルは最終的に

/my/project/dir/logs/mylog

まさに予想通り。

ただし、maven Surefire プラグインが単体テストを実行すると、ファイルはモジュール ディレクトリに配置されます。/my/module で Maven プロジェクトをコンパイルするとします。

コンパイルされたファイルは /my/module/target/classes に配置されます。Maven がこれらのクラスを単体テストを通じて実行すると、同じクラスの出力は最終的に次のようになります。

/my/module/logs/mylog

ファイルが次のようにターゲットディレクトリに配置されるようにしたい

/my/module/target/logs/mylog

これはクラスファイルが存在する場所です。

そのため、Java クラスのルート ディレクトリがモジュール ディレクトリではなくターゲットを指すように定義するように Maven Surefire を構成する方法を探しています。

編集:私はこの投稿を見つけました: Maven: テストが実行されるディレクトリを変更する それは私の問題を修正しようとしているようです。ただし、作業ディレクトリをターゲットディレクトリに設定すると、リソースがモジュール ${basedir} から ${basedir}/target にコピーされたとしても、テストでリソースを見つけることができなくなります

4

3 に答える 3

1

アプリケーションの作業ディレクトリを ./target に設定する必要があります (または Maven プロパティの方法: ${project.build.directory})。

于 2013-09-18T07:48:42.333 に答える