ビルド管理に 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 にコピーされたとしても、テストでリソースを見つけることができなくなります