我很难让JRebel在当前的开发环境中工作。
我有多模块maven项目。目前,Tomcat实例通过服务(tomcat监视器)进行控制,部署的Web应用程序使用位于 $ {catalina.home} / conf / Catalina / localhost 的XML进行配置,其中docBase属性指向< strong> $ {绝对maven项目路径} / target / app (并且属性reloadable为true)。因此,每次我进行maven构建时,如果有任何类更改,我只需要手动重启tomcat。如果修改发生在静态资源(JSP,HTML,JS, 等。)页面刷新会做到这一点。
在我第一次尝试时,我将Web应用程序配置为在Eclipse内运行的tomcat服务器上运行。提供的maven插件也配置成功:我的所有子模块都继承了插件配置,我可以在tomcat启动时看到来自JRebel的输出消息,指示已经监听的绝对项目路径。唯一的问题是Eclipse WTP / Tomcat插件在eclipse中没有使用War覆盖功能。启动服务器后,仅部署了最后一个Web应用程序(具有其他War作为依赖项的模块)中的资源。
所以,我回到原来的配置开发并向它介绍了JRebel。我将JRebel java选项传递给Tomcat Vm,所有maven模块都有rebel.xml(监听正确的资源文件夹),但没有任何反应。我无法看到通常的JRebel消息,我尝试更改源文件夹中的JSP并进行页面刷新但是文件没有自动重新部署(在这种情况下是来自源文件夹的简单副本$ {maven.projec } / target / app会做的伎俩。)
我的两个问题是:
非常感谢任何帮助!
更新1
所以,我明白了。有点......我仍在努力与战争模块重叠。我有一个主Web应用程序模块,它依赖于几个webapps模块。因为rebel.xml是在主webapp构建发生时通过jrebel maven插件动态生成的,所以只有它的jrebel.xml才有效。所有其他人都被压扁了。 jars模块的rebel.xml位于正确的位置(在jar文件中)。
如果我为主webapp创建一个自定义rebel.xml,指向包含源文件(静态文件,如JSP,HTML,JS,CSS,图像等)的所有绝对目录,我就可以使用它。依赖的网络应用程序。但这对我的团队开发环境毫无价值。我正在使用maven属性,但我们有两个不同的maven多模块层次结构,彼此不了解,我不能使用根pom来连接它们。因此,这些属性不足以保证rebel.xml中每台开发人员机器上生成的绝对路径都是正确的。
目前,我正在尝试使用某种maven插件来处理rebel.xml合并。记录尚未成功。
这是另一个与原问题有点不同的问题:)也许我应该通过另一个问题。
更新2
我得到了它的工作!终于。 我使用XSLT Generator Maven Plugin来帮助我合并各种rebel.xml文件。还必须使用神话般的Maven Copy Plugin,因为xslt转换发生在最终的war包装之后,我不得不将生成的rebel.xml添加到该WAR。
如果有人需要配置文件的详细信息,请不要犹豫。
希望这可以帮助那些人。
答案 0 :(得分:0)
我得到了它的工作!终于。我使用XSLT Generator Maven插件来帮助我合并各种rebel.xml文件。还必须使用神话般的Maven Copy插件,因为xslt转换发生在最终的war包装之后,我不得不将生成的rebel.xml添加到该WAR。