Skip to main content
 首页 » 编程设计

maven之使用 IntelliJ Idea、Maven、Tomcat 和 JRebel 展开 War 部署

2025年12月25日32kerrycode

我正在使用 IntelliJ Idea 12、Maven、JRebel 和 Tomcat 开发基于 Web 的应用程序。为了利用JRebel,自动重新加载对Spring beans的更改,我使用了下面Intellij提供的exploded war deployment

由于 Maven 模块,IntelliJ 完全遵循 Maven 的约定将 Java 文件编译到输出文件夹 (target/classes),这与展开的 webapp directoy (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 

请您参考如下方法:

正确配置后,当您启动 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 包,我执行“Make project”(在 IDEA 中),/target/classes 文件夹被更新并且配置将自动重新加载它的类。