IntelliJ、JRebel、Maven 和一个 JEE 6 应用程序

IntelliJ, JRebel, Maven and a JEE 6 application

我的设置是

我在 IntelliJ 中以部署耳朵的方式配置了应用程序。 ear "target" 文件夹看起来像这样 target/classes/ target/appEar/appWeb-version-Snapshot.war/ target/appEar/lib/ target/appEar/META-INF

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

如果我想更新那些 类 我必须在构建项目后在 IntelliJ 中 select "Build Artifacts"。

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

  1. (once) 正确配置 JRebel。
  2. 制作项目
  3. 构建工件

整个过程对我来说似乎太复杂了。有谁知道如何正确设置 IntelliJ/Maven/Glassfish/JEE/JRebel 吗?我还没有找到包含我所有工具的示例。我只想执行一项代码替换操作,而不是两项。

为什么每次都需要Build Artifacts?

您的 war 应包含映射到 /target/classes 文件夹中的 类 的 rebel.xml。

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

因此,假设您的 rebel.xml 类路径指向 /target/classes

,您只需构建项目即可查看更改

您的项目工件设置中有 "build on make" 复选框,如果您正在寻找它,它将始终在编译时重新创建您的工件。然而,JRebel 应该根据 rebel.xml 重新映射您的应用程序正在读取 class 文件和资源的位置,因此您可能应该重写 rebel.xml 以查找它们被编译到的 classes ,而不是他们在构建工件后最终到达的地方。