Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让maven项目从自己的目录而不是工作目录识别文件?_Java_Eclipse_Maven - Fatal编程技术网

Java 如何让maven项目从自己的目录而不是工作目录识别文件?

Java 如何让maven项目从自己的目录而不是工作目录识别文件?,java,eclipse,maven,Java,Eclipse,Maven,我目前有两个项目: api-test ... /config/config.json ... 及 在eclipse中,我在ui测试的构建路径中添加api测试,因此api测试是ui测试的依赖项 但是,生成失败,因为api测试正在通过调用以下命令查找位于api test/config/config.json中的config.json: System.getProperty("user.dir") + "/config/config.json" 它在ui测试项目中不存在 这

我目前有两个项目:

api-test
    ...
    /config/config.json
    ...

在eclipse中,我在ui测试的构建路径中添加api测试,因此api测试是ui测试的依赖项

但是,生成失败,因为api测试正在通过调用以下命令查找位于api test/config/config.json中的config.json:

System.getProperty("user.dir") + "/config/config.json"
它在ui测试项目中不存在


这两个config.json包含不同的内容-当ui测试引用api测试项目时,让每个项目引用自己的config.json的最佳解决方案是什么?

将文件放入项目的
src/main/resources
目录中,如建议的那样。然后可以使用相对路径访问这些资源

例如,见:

测试文件是否存在

@Test
public void testStreamToString() {
  assertNotNull("Test file missing", getClass().getResource("/sample.txt"));
  ...
}

虽然这是不可取的,但您可以简单地使用其完整路径指向文件,这并不是说这将解决路径问题,而是为什么要“在ui测试的构建路径中添加api测试”?为什么不将api测试作为依赖项添加到ui测试的POM中呢?如果您想将api-test.jar添加到ui测试的POM中,我已经尝试过了,但是jar中不包含config.json,所以我会看到相同的错误。jar文件应该打包json文件吗?暂时把
json
文件放在一边,熟悉和中Maven的依赖概念。您有一个项目(=library,=jar)
api测试
。您的另一个项目
ui测试
依赖于
api测试
,因此干净的Maven方法是在
ui测试
的POM中添加
api测试
作为依赖项。如果我将config.json从api测试移动到ui测试项目中,那么ui测试项目将以2 config.json结束,哪一个没有意义?@jamesdeath123我在哪里写的?您提到将文件放入项目的src/main/resources,我假设您的意思是将api测试的config.json放入ui测试的src/main/resources文件夹?如果我错了,请告诉我。@jamesdeath123我不是这个意思。我写了“项目”。。。“目录”,即将每个文件放入它所属项目的
src/main/resources
。我明白了!不幸的是,读取该文件的config类是单例的静态方法,无法引用非静态getClass()。。。
@Test
public void testStreamToString() {
  assertNotNull("Test file missing", getClass().getResource("/sample.txt"));
  ...
}