在Maven项目中,我想将一些测试结果写入项目目标目录中的文件中。每当我得到项目目录时,它实际上是获取IntelliJ项目目录而不是实际的Maven目录。
我得到了解决方案。以下是我的实施方式。我有自己的类CSVReader,它使用CSVReader库。我将结果写在目标目录下的results.csv文件中。
URL location = CSVReader.class.getProtectionDomain().getCodeSource().getLocation();
String path = location.getFile().replace("classes/","") + "results.csv";
在上面的代码中,我获取目标目录路径并删除classes / by string replace方法并附加我想要的文件名。希望这可以帮助某人。
我使用了上面的答案稍作修改(我无法添加评论)。由于测试被放入'test'文件夹,它们的类将驻留在'target / test-classes'中(因此替换'classes'可能不会给你预期的结果)。相反,我使用了以下内容:
File targetClassesDir = new File(ExportDataTest.class.getProtectionDomain().getCodeSource().getLocation().getPath());
File targetDir = targetClassesDir.getParentFile();
你也可以使用java.nio.file.Paths
:
URL url = Paths.get("target", "results.csv").toUri().toURL();