获取Maven(Java)中的目标目录路径

时间:2016-07-25 01:57:41

标签: java maven

在Maven项目中,我想将一些测试结果写入项目目标目录中的文件中。每当我得到项目目录时,它实际上是获取IntelliJ项目目录而不是实际的Maven目录。

5 个答案:

答案 0 :(得分:4)

我得到了解决方案。以下是我的实施方式。我有自己的类CSVReader,它使用CSVReader库。我将结果写在目标目录下的results.csv文件中。

URL location = CSVReader.class.getProtectionDomain().getCodeSource().getLocation();
String path = location.getFile().replace("classes/","") + "results.csv";

在上面的代码中,我获取目标目录路径并删除classes / by string replace方法并附加我想要的文件名。希望这可能有助于某人。

答案 1 :(得分:4)

我使用了上面的答案稍作修改(我无法添加评论)。 由于测试被放入“测试”中。文件夹,他们的类将驻留在' target / test-classes' (因此,替换'类可能不会给你预期的结果)。相反,我使用了以下内容:

File targetClassesDir = new File(ExportDataTest.class.getProtectionDomain().getCodeSource().getLocation().getPath());
File targetDir = targetClassesDir.getParentFile();

答案 2 :(得分:4)

您也可以使用 { "Version": "2012-10-17", "Id": "Policy1520243101111", "Statement": [ { "Sid": "Stmt1520243091111", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": [ "s3:Put*", "s3:Get*" ], "Resource": "arn:aws:s3:::testlabbookbucket1" } ]

java.nio.file.Paths

答案 3 :(得分:2)

我正在使用类加载器根资源路径检索项目构建目录,其中包含以下单行:

Path targetPath = Paths.get(getClass().getResource("/").toURI()).getParent();

根资源路径指向 test-classes,无论是通过 maven surefire 还是像 Eclipse 这样的 IDE 的 JUnit 运行程序运行测试,它的父资源都是所需的路径。

答案 4 :(得分:0)

以下解决方案对我有用:

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();