This pages discusses development of Jenkins core and plugins with JRebel to enhance the development experience.
You can get your free license for non-commercial use here: https://my.jrebel.com.
Runnning Maven with JRebel
To interactively test Jenkins plugins during development with JRebel, start Maven like this:
$ export MAVEN_OPTS="-javaagent:/path/to/jrebel.jar -XX:MaxPermSize=128m" $ mvn hpi:run
Similarly, for Jenkins core, start Maven like this:
$ export MAVEN_OPTS="-javaagent:/path/to/jrebel.jar -XX:MaxPermSize=128m" $ mvn hudson-dev:run
jrebel.xml
is not required to make this work.
What can be reloaded?
Newer versions of Jenkins have better support for JRebel
Reloadable without JRebel
- All the view pages (Jelly, Groovy, ...)
- Help files, images, CSS, and other web resources
Reloadable with debugger hotswap
- Signature compatible code only changes
Reloadable with JRebel
- Signature breaking changes to the model classes (see the feature list for what can be reloaded and what cannot)
Since Jenkins 1.421
- HTTP binding of objects, including web-bound methods (such as doXyz), getter/field traversal (such as getXyz), and so on
- What's exposed to the remote API
Not reloadable yet
- Addition/removal of the extension point implementation