Due to some maintenance issues, this service has been switched in read-only mode, you can find more information about the why

and how to migrate your plugin documentation in this blogpost

Skip to end of metadata
Go to start of metadata

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

Other readings

  • No labels