3

我正在使用 IntelliJ Idea 12、Maven、JRebel 和 Tomcat 开发基于 Web 的应用程序。为了利用 JRebel,自动重新加载对 Spring bean 的更改,我使用了下面 Intellij 提供的爆炸式战争部署

IntelliJ 爆战部署

由于 Maven 模块,IntelliJ 完全遵循 Maven 的约定将 Java 文件编译到输出文件夹(target/classes)中,这与分解的 webapp 目录(target/spring-mvc-showcase/webapp/web-inf/classes)不同。因此,Tomcat 和 JRebel 无法重新加载这些新类的更改。

目前,我临时配置了 IntelliJ 的输出文件夹指向文件夹WEB-INF/classes以便可以重新加载更改。由于我不想打破 Maven 约定,谁能告诉我一个更优雅的解决方案?

target (Maven generated artifact directory)
  |
   -- classes (compiled)
  |
   -- spring-mvc-showcase (exploded webapp directory)
           |
            -- WEB-INF
                 |
                   -- classes
4

3 回答 3

2

正确配置后,当您启动 Tomcat 时,您应该会看到如下内容:

[2013-01-23 15:39:12] JRebel: Directory '/home/xxx/workspace/xxx/trunk/target/classes' will be monitored for changes.
[2013-01-23 15:39:12] JRebel: Directory '/home/xxx/workspace/xxx/trunk/src/main/webapp' will be monitored for changes.

然后我所做的是每次我改变一些东西,而不是运行 maven 包,我执行“制作项目”(在 IDEA 中),/target/classes 文件夹得到更新,配置将自动重新加载它的类。

于 2013-01-23T13:56:59.190 回答
1

您是否安装了 IntelliJ IDEA JRebel 插件?它添加了一个动作“生成 rebel.xml”。这将生成一个 rebel.xml 文件,该文件最终应位于部署中的 WEB-INF/classes 中,并将类映射到 IDEA 编译它们的位置。

于 2013-01-23T11:56:47.573 回答
0

这是一个使用 IDEA、Jrebel 和 maven-tomcat 快速启动热部署的简单方法。 IDEA 使用 JRebel 和 tomcat7-maven-plugin 热部署 Web 应用程序

于 2015-08-04T05:44:42.923 回答