我有一个模块化的Web项目,因此我允许模块成为包含webapp文件夹的war存档。使用以下rebel.xml可以很好地检测所有模块上的类更改。但由于某些原因,当改变html或js时jrebel不会移动。
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zeroturnaround.com"
xsi:schemaLocation="http://www.zeroturnaround.com http://www.zeroturnaround.com/alderaan/rebel-2_0.xsd">
<classpath>
<!-- appserver -->
<dir name="/home/xx/data/appserver/target/classes/main"/>
<dir name="/home/xx/data/appserver/target/resources/main"/>
<!-- module -->
<dir name="/home/xx/data/as.module.core/target/classes/main"/>
<dir name="/home/xx/data/as.module.core/target/resources/main"/>
<dir name="/home/xx/data/as.module.mqlcore/target/classes/main"/>
<dir name="/home/xx/data/as.module.mqlcore/target/resources/main"/>
</classpath>
<!-- web>
<link target="/">
<dir name="/home/xx/data/appserver/src/main/webapp"/>
<dir name="/home/xx/data/as.module.core/src/main/webapp"/>
<dir name="/home/xx/data/as.module.mqlcore/src/main/webapp"/>
</link>
</web -->
<web>
<link target="/">
<dirset dir="/home/xx/data">
<include name="**/src/main/webapp"/>
</dirset>
</link>
</web>
</application>
编辑:
有趣的事实是。当我使用Web配置的注释部分时,所有三个webapp文件夹都在日志中,并将监视更改。但是应用程序服务器找不到所有的webapp文件。当我使用第二个<web>
配置时,应用程序服务器会看到所有文件,但jrebel不会观察到这些文件。我认为不可能将多个目录链接到&#34; /&#34;
答案 0 :(得分:0)
每个模块(例如.war或.jar文件)都需要拥有自己的rebel.xml文件。否则所有这些都会重新加载相同的资源,当有不同的类加载器时,会发生各种奇怪的事情。
通过从jrebel.log搜索“found resource”,可以检查JRebel文件的哪个实例。它应该写成这样的东西 sun.misc.Launcher$AppClassLoader@184be29找到资源:'cfg / log4j.xml'来自'file:/ C:/Projects/testproject/Trunk/edm/target/cfg/log4j.xml'。
还可以看到哪个文件通过使用像这样的事件来添加行来改变: [IntelliJFSNotify]事件'CHANGE'开启:'C:/Projects/testproject/Trunk/edm/target/cfg/log4j.xml'
如果未重新加载文件,通常发现资源和更改的文件路径不匹配。如果匹配,则建议将文件的绝对路径和jrebel.log发送到support@zeroturnaround.com进行调查。
答案 1 :(得分:0)
好的,答案是:确实无法在<web><link target="/"></link></web>
配置下配置多个目录。我现在有一个文件夹./target/all-webapp我在smylink(cp -sR
)所有文件通过gradle任务...不好但是工作...感谢上帝jrebel跟随符号链接!