General IDE configuration


Project configuration with relative paths

JRebel IDE plugins support paths variables pointing to current project’s path in rebel.xml (JRebel for Eclipse supports it as of 2018.2.1, JRebel for IntelliJ as of 2018.2.4). This enables you to create rebel.xml configuration once for your project and commit it into the SCM repository, enabling all developers to share the same configuration (rebel.xml files containing absolute paths should never be committed, as absolute paths will vary from developer to developer).

To use this, replace all occurrences of your project root path with a variable like ${rebel.projectpath.myprojectid} in your rebel.xml, replacing myprojectid with a unique ID for your project. rebel.projectpath is a mandatory prefix to have the JRebel IDE plugin auto-expand these values.

Note

Project ID in the variable doesn’t have to match any real project id, name or directory. The only restriction is that it should be unique in your current workspace, otherwise it might be overridden by some other project’s path (the precedence is not defined).

All variables with prefix rebel.projectpath. in the rebel.xml file are resolved to current project’s root path and passed to the application server as JVM arguments, so that JRebel Agent can resolve them at runtime.

For example, if you have project mySampleProject located in C:\path\to\mySampleProject, you can have such configuration in rebel.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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>
    <dir name="${rebel.projectpath.myproject}\target\classes"/>
  </classpath>

</application>

As a result, -Drebel.projectpath.myproject=C:\path\to\mySampleProject will be passed automatically to the application server started from the IDE.

Warning

This option is not compatible with application servers started from outside the IDE (e.g. with CLI scripts). You can work around this by defining the variable manually in the JVM startup arguments or jrebel.properties. Be aware that if you commit such rebel.xml, then all your colleagues need to define the path variables manually as well.


Warning

Deprecated path variables. Due to inconsistent behavior, these old variable are not recommended. Specifically, you should refrain from using them if JRebel users in your team are using different IDEs.

  • ${rebel.workspace.path} – Refers to the workspace root folder. Only applicable when using Eclipse. Don’t use in cross-IDE teams.
  • ${rebel.project.path} – Refers to the project’s root folder. Only applicable when using remote server support and an IDE. Should not be used when running JRebel locally.