在Maven项目中,我想将一些测试结果写入项目目标目录中的文件中。每当我得到项目目录时,它实际上是获取IntelliJ项目目录而不是实际的Maven目录。
答案 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();