如何在Hybris后台扩展中配置jrebel?

时间:2017-06-26 12:00:33

标签: hybris jrebel

使用" ant extgen和ybackoffice模板"创建了一个后台扩展。 我想添加jrebel到这个后台扩展,但是当我更改代码时不重新加载。 所以,请帮我解决问题,以节省部署时间。谢谢

1 个答案:

答案 0 :(得分:1)

检查打包为.jar包的后台扩展是否包含rebel.xml文件,如果在.java文件中进行了代码更改,则会在.class目录中生成新的$PLATFORM_HOME/bin/custom/$EXTENSION_NAME/backoffice/classes文件在rebel.xml

中定义 来自documentation门户网站的

复制粘贴:

打包为JAR文件的

后台扩展需要一个名为rebel.xml的描述符文件。此XML文件将告诉JRebel此JAR的.class个文件位于该文件夹中。要实现此目的,您需要对要重新加载的所有扩展执行以下操作:

要通过IDE重新编译,请使用ant build将编译输出设置为实际编译类的位置。对于后台扩展,这将是$PLATFORM_HOME/bin/custom/$EXTENSION_NAME/backoffice/classes

rebel.xml中创建以下$EXTENSION_NAME/backoffice/resources

<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zeroturnaround.com" xsi:schemaLocation="http://www.zeroturnaround.com http://update.zeroturnaround.com/jrebel/rebel-2_1.xsd">
  <classpath>
    <!-- Make sure to replace $PLATFORM_HOME and $EXTENSION_NAME with your concrete values -->
    <dir name="$PLATFORM_HOME/bin/custom/$EXTENSION_NAME/backoffice/classes"/>
  </classpath>
</application>

编辑$EXTENSION_NAME/buildcallbacks.xml并在构建回调之前添加以下内容:

<macrodef name="$EXTENSION_NAME_before_build">
  <sequential>
    <mkdir dir="${ext.$EXTENSION_NAME.path}/backoffice/classes" />
      <copy file="${ext.$EXTENSION_NAME.path}/backoffice/resources/rebel.xml" todir="${ext.$EXTENSION_NAME.path}/backoffice/classes/" failonerror="false" />
  </sequential>
</macrodef>

这将确保在构建时将rebel.xml捆绑到已编译的扩展JAR文件中。

从IDE更改类时,只需重新编译该类(使用ant build或在设置正确的编译输出后通过IDE)并重新加载浏览器。更改的.class文件由JRebel选取并即时重新加载。