IntelliJ,JRebel,Maven和JEE 6应用程序

时间:2016-09-13 06:50:56

标签: intellij-idea jrebel

我的设置是

  • IDE:IntelliJ
  • 应用程序:带有EAR和WAR模块的JEE6
  • 构建:Maven
  • 热代码替换:JRebel
  • App-Server:Glassfish 3.1

我在IntelliJ中以一种部署耳朵的方式配置了应用程序。耳朵"目标"文件夹看起来像这样 目标/班/ 目标/显示/ appWeb版本,Snapshot.war / 目标/出现/ LIB / 目标/出现/ META-INF

在默认配置中,JRebel侦听classes /文件夹中的更改。 当我在Web模块中更改某些内容并构建它时,这些类仅在appWeb / target / classes /中更新,但不在appEar / target / appEar / appWeb-version-Snapshot.war /中更新。

如果我想更新这些课程,我必须选择" Build Artifacts"在构建项目后的IntelliJ中。

总而言之,我必须为热代码替换执行以下步骤:

  1. (一次)正确配置JRebel。
  2. 制作项目
  3. 构建工件
  4. 这整个程序对我来说似乎太复杂了。有没有人知道如何正确设置IntelliJ / Maven / Glassfish / JEE / JRebel?我还没有找到包含所有工具的示例。我希望代码替换只有一个动作,而不是两个。

2 个答案:

答案 0 :(得分:1)

项目工件设置中有“build on make”复选框,如果您正在寻找的话,它将始终在编译时重新创建工件。但是,JRebel应重新映射应用程序基于rebel.xml读取类文件和资源的位置,因此您可能只需重写rebel.xml以查找编译它们的类,而不是在构建工件后它们最终的位置。

答案 1 :(得分:0)

为什么每次都需要构建工件?

你的战争应该包含映射到/target/classes文件夹中的类的rebel.xml。

当您对所述类进行更改时,您的服务器就会知道从这些类加载更改。

因此,您只需要构建项目,以便在rebel.xml类路径指向/target/classes时查看更改。