Developing Bloomreach Experience Manager with JRebel and IntelliJ
Here's how you can use JRebel & IntelliJ IDEA to build and hack the Bloomreach Experience Manager source code. This will also help you to work with Plugins. The main advantage is whenever you modify a class, you don't need to recompile the source code, the changes are instantly loaded by JRebel. This examples below assume that you are working on Bloomreach Experience Manager source code, and checked it out already from the source code repository.
Enable JRebel
First, run the following command once for the entire project:
mvn -Djrebel -DskipTests clean install
This generates the rebel.xml automatically in target/classes for every module.
Optionally you can install the JRebel Plugin for IntelliJ IDEA..
Disable IntelliJ hotswap
Go to File -> Settings -> Debugger -> HotSwap, and select Never for 'Reload classes after compilation'.
Start the CMS in Wicket development mode
To prevent Wicket from caching HTML and CSS, the CMS should be started in Wicket development mode. The most convenient way to do this is via an extra command line option:
mvn -Pcargo.run -Djrebel -Dcargo.jvm.args='-Dwicket.configuration=development'
Tomcat should now log the following message during startup:
[INFO] [talledLocalContainer] ******************************************************************** [INFO] [talledLocalContainer] *** WARNING: Wicket is running in DEVELOPMENT mode. *** [INFO] [talledLocalContainer] *** ^^^^^^^^^^^ *** [INFO] [talledLocalContainer] *** Do NOT deploy to your live server(s) without changing this. *** [INFO] [talledLocalContainer] *** See Application#getConfigurationType() for more information. *** [INFO] [talledLocalContainer] ********************************************************************
Remote Debugger
Go to Run -> Edit Configurations -> Remote, and add a remote debugger configuration using port 8000.
Debugging multiple projects in IntelliJ
A how-to for adding multiple projects to IntelliJ can be found on Stack Overflow.