Quarkus在测试配置文件中的工作目录与在开发模式中的不同,这会在访问资源文件时产生路径问题



resources文件夹中有一个file.txt。让一个Bean在应用程序启动生命周期中加载该文件:

在Development profile中,当编译和运行时,resources文件夹被复制到build(或带有maven的target(目录中,工作目录是相对于资源文件的,因此不需要特殊的路径或其他什么。

所以基本上在application.properties中定义文件名就足够了。


在测试配置文件中,工作目录是项目根目录,因此如果不提供resources文件夹的完整相对路径,就无法再找到文件。

有没有任何方法可以告诉Quarkus测试配置文件和/或Microprofile配置注释在资源文件夹中查找以在需要时加载一些资源?

除了这个不整齐的轮廓差异,我没有找到任何其他解决办法。

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

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

我希望它能帮助你。

我不知道这里是否有很多我们可以自动做的事情,gradle/maven控制测试过程的工作目录。使用maven,至少您可以控制surefire进程的工作目录,请参阅此处的答案:maven:更改执行测试的目录

最新更新