我正在开发一个Spring Multi Module Project。其中一个项目在名为drivers
的文件夹中包含一些JSON文件,位于:<Project>/src/main/resources
。
当我第一次启动应用程序时,所有JSON文件都已正确加载,但如果我对其中一个进行更改,则JRebel继续使用旧文件。
有没有办法配置它来解决这个问题?
谢谢。
这是该项目的rebel.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<application generated-by="intellij" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zeroturnaround.com" xsi:schemaLocation="http://www.zeroturnaround.com http://update.zeroturnaround.com/jrebel/rebel-2_1.xsd">
<classpath>
<dir name="C:/PathToProject/target/classes">
</dir>
<dir name="C:/PathToProject/src/main/resources/drivers">
</dir>
</classpath>
<web>
<link target="/">
<dir name="C:/PathToProject/src/main/webapp">
</dir>
</link>
</web>
</application>
将类路径部分更改为
<classpath>
<dir name="C:/PathToProject/src/main/resources/"/>
<dir name="C:/PathToProject/target/classes"/>
</classpath>
如果应用程序正在尝试加载类路径资源,则其全名很重要(例如.drivers/myfile.json
),因为这是传递给类加载器的内容。 rebel.xml必须指定类路径根的路径,而不是子文件夹。为了更好地控制,您可以使用dir
条目的包含/排除。此外,路径按顺序进行检查,如果它存在于第一个路径中,即使它较旧也会返回。
因此,在您当前的配置中,JRebel将首先搜索C:/PathToProject/target/classes/drivers/myfile.json
,并在IDE中最后一次运行maven-resources-plugin copy-resources目标或项目构建时找到旧版本。
现在,如果只修改了订单,则第二条路径仍然不正确,因为它会查找不存在的C:/PathToProject/src/main/resources/drivers/drivers/myfile.json
。