Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Debugging in maven with mvnDebug command

I read this: Debugging in Maven?

I'm running intellij remote debug and maven for a service I'm trying to debug.

I'm running

mvnDebug tomcat7:run 

Which gives me the following result

Preparing to Execute Maven in Debug Mode
Listening for transport dt_socket at address: 8000
^Ctai-m:sb-api-internal-server tai$ m

My problem is that I want to change the port easily. I know that I can go into the pom.xml file and change it or that I can do the following in:

mvnDebug.bat

@REM set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000

but I want to be able to specify my port on the command line. Is there any way to do this? I want to be able to debug multiple services on different addresses running at once and am under the impression that it would be a hassle to have to set and reset the debug file setting for each one.

A friend said it should be possible but I can't seem to find a solution.

Essentially Im looking for a way to easily switch the port a service is running on hopefully without modifying a file multiple times as I launch multiple services. Otherwise Is there another solution you can thing of? Ex having the first debug instance running on one port and then having the second on another (hard coded)?

Thanks

like image 677
Tai Avatar asked Mar 27 '15 21:03

Tai


People also ask

Can we debug in Maven?

You can use the maven. surefire. debug property to debug your forked tests remotely, like this: mvn -Dmaven.

What is mvnDebug?

mvnDebug - Command to start the Maven system in Debug mode.

How do I debug test cases in Maven IntelliJ?

In the IDE, add debug points where you want the debugger to pause during execution. Then in the terminal, enter your Maven execution command, replacing mvn with mvnDebug . In IntelliJ, make sure your debugging configuration is selected, then press the “Debug” button.


1 Answers

Wow, Maven makes this difficult. Setting -Xrunjdwp in MAVEN_OPTS won't work, because mvnDebug.bat adds its own afterward, which will override MAVEN_OPTS. I would copy mvnDebug.bat to myMvnDebug.bat and comment out the line set MAVEN_DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000. That way you can set MAVEN_DEBUG_OPT on the command line before running it.

C:\somewhere>set MAVEN_DEBUG_OPT=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8001
C:\somewhere>myMvnDebug.bat
like image 149
Kevin Condon Avatar answered Oct 01 '22 03:10

Kevin Condon