在Maven项目中,我想将一些测试结果写入项目目标目录中的文件中。每当我获取项目目录时,它实际上获取的是IntelliJ项目目录,而不是实际的Maven目录。
5sxhfpxr1#
也可以使用java.nio.file.Paths:
java.nio.file.Paths
URL url = Paths.get("target", "results.csv").toUri().toURL();
dsf9zpds2#
我有办法了。这就是我如何实施的。我有自己的类CSVReader,它使用CSVReader库。我正在目标目录下的results.csv文件中写入结果。
URL location = CSVReader.class.getProtectionDomain().getCodeSource().getLocation(); String path = location.getFile().replace("classes/","") + "results.csv";
在上面的代码中,我获取了目标目录路径,删除了classes/ by string replace方法,并附加了我想要的文件名。希望这可能会帮助某人。
332nm8kg3#
我使用了上面的答案,并进行了轻微的修改(我不能添加评论)。由于测试放在“test”文件夹中,它们的类将驻留在“target/test-classes”中(因此替换“classes”可能不会给予预期的结果)。相反,我使用了以下内容:
File targetClassesDir = new File(ExportDataTest.class.getProtectionDomain().getCodeSource().getLocation().getPath()); File targetDir = targetClassesDir.getParentFile();
yc0p9oo04#
我使用classloaders根资源路径来检索项目构建目录,下面是单行:
Path targetPath = Paths.get(getClass().getResource("/").toURI()).getParent();
根资源路径指向test-classes,它的父路径是所需的路径,无论是通过maven surefire还是通过IDE的JUnit运行器(如Eclipse)运行测试。
test-classes
agyaoht75#
以下解决方案适用于我:
URL location = YourClass.class.getProtectionDomain().getCodeSource().getLocation(); String path = location.getFile().replace("/test-classes/","").replace("/classes/","");
或
Path targetPath = Paths.get(getClass().getResource("/").toURI()).getParent(); String path = targetPath.toString();
n3h0vuf26#
您需要获取类的位置,在那里运行逻辑以获取目标路径的位置。我使用下面的代码来实现这一点:
URL target = this.getClass().getClassLoader().getResource("org/mycomp/home/model").toURI().toURL();
6条答案
按热度按时间5sxhfpxr1#
也可以使用
java.nio.file.Paths
:dsf9zpds2#
我有办法了。这就是我如何实施的。我有自己的类CSVReader,它使用CSVReader库。我正在目标目录下的results.csv文件中写入结果。
在上面的代码中,我获取了目标目录路径,删除了classes/ by string replace方法,并附加了我想要的文件名。希望这可能会帮助某人。
332nm8kg3#
我使用了上面的答案,并进行了轻微的修改(我不能添加评论)。由于测试放在“test”文件夹中,它们的类将驻留在“target/test-classes”中(因此替换“classes”可能不会给予预期的结果)。相反,我使用了以下内容:
yc0p9oo04#
我使用classloaders根资源路径来检索项目构建目录,下面是单行:
根资源路径指向
test-classes
,它的父路径是所需的路径,无论是通过maven surefire还是通过IDE的JUnit运行器(如Eclipse)运行测试。agyaoht75#
以下解决方案适用于我:
或
n3h0vuf26#
您需要获取类的位置,在那里运行逻辑以获取目标路径的位置。我使用下面的代码来实现这一点: