JRebel Gradle plugin

When should you use this plugin?

To enable JRebel for a project, you need to add the rebel.xml configuration file to it. The rebel.xml configuration file has to be added to the deployed WAR or JAR archive. This will let the JRebel agent know which workspace paths to monitor for class and resource updates.

The purpose of the JRebel Gradle plugin is to generate the rebel.xml file for your project during the Gradle build.

When using a JRebel IDE plugin, it is recommended to generate rebel.xml files using the IDE plugin. If you do so, there is no need to use the JRebel Gradle plugin. Generating rebel.xml using the JRebel Gradle plugin is intended for situations when generation using the IDE plugin is not available or produces inaccurate results.

Refer to application configuration using rebel.xml for details on rebel.xml file format.


Enable the JRebel Gradle plugin

When using Gradle 2.1 or newer, add the following snippet to the top of your build.gradle script:

plugins {
  id "org.zeroturnaround.gradle.jrebel" version "1.2.0"
}

The plugin provides a new task called generateRebel that by default depends on the processResources phase. For more fine-tuned control it can be changed to only run before certain tasks, for example only before building a war artifact:

war.dependsOn(generateRebel)

In most cases, this is all you need to do. The plugin should be able to read the locations of your classes and resources from Gradle’s project model and put them into your rebel.xml.


IDE configuration

Please note that the Gradle Eclipse plugin does not seem to generate project files that would configure Eclipse to auto-compile your classes into the same folder where Gradle is compiling them. JRebel class reloading relies on your IDE to automatically re-compile your classes, so that JRebel can pick them up.

The compilation output directory of your IDE and the monitored classes directory have to match in order for the class reloading to work. Therefore, make sure that your IDE is compiling classes into the same directory where your Gradle project model and the rebel.xml file are expecting them (build/classes/main by default, as opposed to bin which is the default for Eclipse).


JRebel Gradle plugin configuration for use with multi-module projects

To configure the JRebel Gradle plugin’s automatic rebel.xml generation for all modules in a multi-module project, use the following scripts.

build.gradle
 plugins {
   id 'org.zeroturnaround.gradle.jrebel' version '1.2.0' apply false
 }
 allprojects {
   apply plugin: 'org.zeroturnaround.gradle.jrebel'
 }
build.gradle.kts
 plugins {
   id("org.zeroturnaround.gradle.jrebel") version "1.2.0" apply false
 }
 allprojects {
   apply (plugin = "org.zeroturnaround.gradle.jrebel")
 }

Advanced configuration

For more help configuring Gradle, please check out: