我有一个使用 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
因为这是类文件所在的位置。
所以我正在寻找一种方法来配置 maven surefire 来定义 java 类的根目录以指向目标而不是模块目录。
编辑:我找到了这篇文章: Maven:更改执行测试的目录 这似乎试图解决我的问题。但是,如果我将工作目录设置为我的目标目录,测试将无法再找到我的资源,即使它们是从模块 ${basedir} 复制到 ${basedir}/target