java 测试配置文件中的Quarkus具有与开发模式不同的工作目录,从而导致访问资源文件的路径问题

l2osamch  于 2023-10-14  发布在  Java
关注(0)|答案(3)|浏览(148)

resources文件夹中有一个file.txt。让Bean在Application启动生命周期时加载该文件:
在开发配置文件中,当编译和运行时,resources文件夹被复制到build(或maven中的target)目录中,工作目录是相对于资源文件的,因此不需要特殊的路径或其他什么。
所以基本上是足够的定义文件名在application.properties
在测试配置文件中,工作目录是项目根目录,因此如果不提供resources文件夹的完整相对路径,就无法再找到该文件。
是否有任何方法可以告诉Quarkus测试配置文件和/或Microprofile配置注解在资源文件夹中查找,以便在需要时加载一些资源?
我没有发现任何除了一个解决办法,以这种不整洁的个人资料的差异。

jk9hmnmh

jk9hmnmh1#

我通过使用配置文件解决了这个问题,在我的情况下,在测试中根文件夹似乎是根项目文件夹,而在开发模式下是目标文件夹,所以我在属性文件中使用了这个配置:

  1. cv-store-folder=./stored-cvs/
  2. %dev.cv-store-folder=../stored-cvs/

希望能帮到你。

7y4bm7vi

7y4bm7vi2#

我不知道这里是否有很多我们可以自动完成的事情,gradle/maven控制测试过程的工作目录。使用maven至少你可以控制surefire进程的工作目录,请看这里的答案:Maven: change the directory in which tests are executed

55ooxyrt

55ooxyrt3#

可以使用Resources.getResource
举例来说:resources/json/entity.json
然后:new File(Resources.getResource(“/json/entity.json”).getFile()

相关问题