Recently I started working on a project that required me to have the backend part installed locally, instead of using a remote backend. The project uses Maven as a build tool and it deploys the code to a Tomcat server.
I got cracking and started configuring the project on my local machine. The first thing I noticed is that Intellij IDEA Community does not have a Tomcat plugin, unlike the Ultimate edition, that has one out of the box.
Many Google searches later I found a few plugins that might do the trick but when I tried using them, the famous NullPointerException happened and I started looking for an alternative. I found some inspiration on Github, but not in the form I wanted, but it was good enough to get me started.
Bellow is a short tutorial on how to setup Tomcat in Intellij IDEA Community to run/debug, and how to use Maven to build your project and then deploy it to Tomcat.
Prerequisites
- Install Intellij IDEA Community.
- Install Tomcat - For my project I've used Tomcat 8. You can get it from here.
- Install Maven.
Tomcat Configuration
Make sure you install Tomcat in a place that doesn't require admin access, for example next to your project.
After that, open File -> Settings
and expand Tools
and select External Tools
.
You can add a new tool with whatever name you want. I named mine, Tomcat. For tool settings, select the catalina.bat
file, usually located in the bin
folder of your Tomcat installation. For example mine is C:\apache-tomcat-8.5.34\bin\catalina.bat
. And last but not least set an argument with the command jpda run
. The working directory should be set automatically.
Tomcat External Tool
Start Tomcat
If you go to Tools -> External Tools
and click on Tomcat, it should start the Tomcat server.
Maven build and deploy to Tomcat
Now that you're done with the Tomcat configuration you want the ability to build using Maven and deploy to the now working Tomcat server.
To achieve this you'll need to head over to Run -> Edit Configurations
, click the "+" and select Maven
. Don't forget to name your new configuration. Select your project location and add the following command line.
war:war org.codehaus.mojo:wagon-maven-plugin:upload-single -Dwagon.fromFile=D:\work\project\backend.war -Dwagon.url=file://C:\apache-tomcat-8.5.34\webapps\
What this line does is that it builds the project, using Maven, and then gets the file from the specified path (that's usually configured in your project) and copies it to the webapps
folder in Tomcat. Tomcat then knows it has a new version of the file and redeploys it.
Build and deploy to Tomcat
Tomcat Remote Debug
Like all applications you want the ability to debug your backend. To achieve this you'll need to add a new configuration like the previous step. The only difference this time is that when you click "+" you'll need to select Remote
.
Give your configuration a name. You'll need to set the Debugger mode to Attach to remote JVM
, the Transport to Socket
, the Host to localhost
and lastly the Port to 8000
. That way when you start the configuration, Intellij will connect via Socket to the Tomcat server that emits via port 8000
. You can change the port for Tomcat, to something else, in the Tomcat server.xml
file, in the config folder.
Tomcat Remote Debug
Once the Tomcat server is started you can run this configuration. Just click on Run -> Debug
and then select the newly created configuration.
If you want to keep a record of all the logs when debugging, you can achieve this by going to the Logs tabs in the newly created Remote configuration and set the Save console output to file to the logs
folder of your Tomcat installation. In my case it was C:\apache-tomcat-8.5.34\logs*.*
.
Tomcat Remote Debug Logs
That is it. @ me on Twitter if you think I've missed something or if there is another way of doing this without installing Eclipse or purchasing the Ultimate edition of Intellij IDEA.
Until next time, code long and prosper!