4

我很难让 JRebel 在我当前的开发环境中工作。

我有多模块 Maven 项目。目前,Tomcat 实例是通过服务(tomcat 监视器)控制的,部署的 Web 应用程序使用位于${catalina.home}/conf/Catalina/localhost的 XML 进行配置,其中 docBase 属性指向${absolute maven project path}/ 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. 有可能克服eclipse WTP问题吗?
  2. 什么是涉及 maven eclipse 和外部 tomcat 的功能开发环境?

任何帮助将非常感激!


更新 1

所以,我明白了。有点……我还在为覆盖战争模块而苦苦挣扎。我有一个主要的 web 应用程序模块,它依赖于几个 webapps 模块。因为 rebel.xml 是在主 webapp 构建发生时通过 jrebel maven 插件动态生成的,所以只有它的 jrebel.xml 占上风。其他的都被压扁了。jar 模块的 rebel.xml 位于正确的位置(在 jar 文件内)。

如果我为主 webapp 创建一个自定义 rebel.xml,它指向包含依赖 web 的源文件(静态文件,如 JSP、HTML、JS、CSS、图像等)的所有绝对目录,我可以让它工作应用。但这对我的团队开发环境毫无价值。我正在使用 Maven 属性,但我们有两个不同的 Maven 多模块层次结构,它们彼此不了解,我不能使用根 pom 来连接它们。所以这些属性不足以保证rebel.xml中每个开发者机器上生成的绝对路径是正确的。

现在,我正在尝试使用某种 maven 插件来进行 rebel.xml 合并。备案尚未成功。

这正在成为另一个与原始问题有点不同的问题:) 也许我应该通过另一个问题。


更新 2

我让它工作了!..终于。我使用XSLT Generator Maven 插件来帮助我合并各种 rebel.xml 文件。还必须使用神话般的Maven 复制插件,因为 xslt 转换发生在最终战争打包之后,我必须将生成的 rebel.xml 添加到该 WAR。

如果有人需要配置文件的详细信息,请不要犹豫。

希望这可以帮助那里的人。

4

1 回答 1

0

我让它工作了!..终于。我使用 XSLT Generator Maven 插件来帮助我合并各种 rebel.xml 文件。还必须使用神话般的 Maven 复制插件,因为 xslt 转换发生在最终战争打包之后,我必须将生成的 rebel.xml 添加到该 WAR。

于 2013-04-22T21:45:52.000 回答