Hello π
I would like to share a quick tip with you about how to configure a live reload and recompilation of your code changes in a Java project.
This post could be helpful if you use:
- Java EE with the TomEE server and cannot (or do not want to) use third-party tools like JRebel
- IntelliJ IDEA as an IDE (my version is 2020.3.1)
- Maven as a build tool
To reload code changes immediately and see the corresponding effects in the browser without restarting the server, you should take the following steps.
TomEE dynamic deployment configuration
Add the tomee-maven-plugin to your pom.xml file and configure it like this. The key properties are extensions
, reloadOnUpdate
and openejb.system.apps
.
<plugin>
<groupId>org.apache.tomee.maven</groupId>
<artifactId>tomee-maven-plugin</artifactId>
<version>${tomee.version}</version>
<configuration>
<tomeeClassifier>plus</tomeeClassifier>
<!-- adjust the context name according to your project -->
<context>ROOT</context>
<synchronization>
<extensions>
<!-- used for detecting code changes in Java classes -->
<!-- if needed, add other extensions (like .properties)-->
<extension>.class</extension>
</extensions>
</synchronization>
<reloadOnUpdate>true</reloadOnUpdate>
<systemVariables>
<openejb.system.apps>true</openejb.system.apps>
<tomee.serialization.class.blacklist>-</tomee.serialization.class.blacklist>
</systemVariables>
</configuration>
</plugin>
Then, run your project with clean package tomee:run
IntelliJ IDEA auto-build configuration
After a code change, the project should be recompiled. You can do this through:
-
mvn compile
command -> in my project this takes around 10 seconds and must be done manually - auto-build functionality in IntelliJ IDEA -> takes around 3-4 seconds and is, well... automatic!
To be able to use the auto-build, do the following steps:
-
File > Settings > Build, Execution, Deployment > Compiler > "Build project automatically" > Apply
- Open the Action window with
Ctrl+Shift+A
and type inRegistry
- Search for
compiler.automake.allow.when.app.running
andcompiler.document.save.enabled
and check a checkbox - To speed up the auto-build, reduce the value of
compiler.automake.postpone.when.idle.less.than
(e.g. to 1500 ms)
As the last step, refresh your browser page and... voilΓ π
Please keep in mind: if your project has several independent modules, the dynamic deployment will only work for the module, in which you have configured the tomee-maven-plugin.
By the way, this is my first post on Dev.to and I hope it could help someone π
Top comments (0)