2013-01-23 78 views
3

我正在开发一个IntelliJ Idea 12,Maven,JRebel和Tomcat的基于Web的应用程序。为了充分JRebel的优势,自动重新加载改变到Spring豆,我用下面使用IntelliJ Idea,Maven,Tomcat和JRebel进行爆炸式战争部署

IntelliJ exploded war deployment

通过的IntelliJ提供的爆炸战争部署由于一个Maven模块的IntelliJ完全遵循Maven的约定,以编译Java文件导入输出文件夹(目标/类)这是不同于爆炸的webapp直接(目标/弹簧mvc展示/ webapp/web-inf /类)。因此,Tomcat和JRebel无法重新加载这些新类的更改。

目前,我暂时配置了IntelliJ的输出文件夹,指向文件夹WEB-INF/classes,以便可以重新加载更改。由于我不想违反Maven约定,任何人都可以告诉我一个更优雅的解决方案吗?

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

解决! JRebel具有在运行时直接监视和重新加载更改文件的功能,即使是打包的战争部署也是如此!只需在项目上单击“生成rebel.xml”,JRebel就会根据Maven pom.xml监视输出目录。惊人! –

回答

1

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

+0

非常感谢。我不知道还有一个教程留给“rebel.xml”。在为IntelliJ安装JRebel插件之后,我认为它工作正如我看到它完美地重载了Spring XML配置中的更改。 –

2

后你已经正确配置它,当你启动Tomcat,你会看到这样的事情:而不是运行Maven包

[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. 

然后,每个我改变的东西时我做的是,我执行“Make project”(在IDEA中),/ target/classes文件夹得到更新,配置将自动重新加载它的类。

+0

您的日志非常有用,它帮助我理解了我的JRebel配置错误。 –

+0

我有点相同的问题。其实,这是行家谁保持爆炸战争的目标/弹簧MVC-展示,所以如果你点JRebel的到/目标/弹簧MVC-展示/ WEB-INF/classes中,你必须在你每次改变运行Maven一类。相反,如果您将它指向目标/课程,那么您就可以使用更快的“Make项目”。 – ag0rex