When developing with maven by default there is no way to debug maven – or a self written maven plugin. This is really nasty when trying to write a plugin and then test the plugin. But there is a simple solution/workaround to do this.
Maven or a Maven Plugin
In order to debug maven or a plugin simply set the environment variable MAVEN_OPTS to the following value:
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
Then the process opens port 8000
and you are able to all the cool stuff when connecting with a debugger! Setting the option suspend=y
helps debugging a lot because it requires the jvm to wait until a debugger is connected. But be careful! Without removing the option maven always will wait for a debugger to be connected.
This helps debugging maven or a maven plugin. But this is not a good idea when debugging a test that runs with the maven surefire plugin.
Tests or Integration Tests
For debugging a test you can add the following option when running maven. Choose the first option to run normal unit tests in debug mode. The second option helps debugging integration tests.
-Dmaven.surefire.debug -Dmaven.failsafe.debug