Remote debugging
For a developer, remote debugging is a must-have feature for any build system. Why do we need remote debugging for a build system? This is extremely useful when you run your tests through the build itself. If any of the tests fail during the build, you should be able to debug and pinpoint the problem. The following command will run Maven in the debugging mode:
$ mvn clean install -Dmaven.surefire.debug
When the build starts to execute tests, it will be paused to connect with an IDE. You can connect Eclipse, NetBeans, or your favorite IDE to port 5005 in order to start remote debugging. By default, Maven opens up port 5005 for remote debugging.
------------------------------------------------------- T E S T S ------------------------------------------------------- Listening for transport dt_socket at address: 5005
The default listening port number can be changed by setting the value of address
appropriately. When you set the value of the suspend
variable to y
, the Maven build will stop until an IDE gets connected to it. If you want the build to continue and connect the IDE later, then set the value to n
. To get full control over the debugging options, you can use the following command:
$ mvn clean install -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -Xnoagent -Djava.compiler=NONE"
Note
Refer to the corresponding IDE documentation to see how it can be remotely connected to an externally running process for remote debugging.