使用" ant extgen和ybackoffice模板"创建了一个后台扩展。 我想添加jrebel到这个后台扩展,但是当我更改代码时不重新加载。 所以,请帮我解决问题,以节省部署时间。谢谢
答案 0 :(得分:1)
检查打包为.jar包的后台扩展是否包含rebel.xml
文件,如果在.java
文件中进行了代码更改,则会在.class
目录中生成新的$PLATFORM_HOME/bin/custom/$EXTENSION_NAME/backoffice/classes
文件在rebel.xml
。
复制粘贴:
打包为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选取并即时重新加载。