1. 程式人生 > >eclipse遠端除錯命令列執行的maven執行程式

eclipse遠端除錯命令列執行的maven執行程式

有的時候,我們需要除錯命令列執行的maven執行程式。該怎麼辦呢?
我們知道eclipse本身可以執行遠端除錯,具體做法網上都有不少文章, 這裡不再多說。
現在的問題就是在maven在執行時,如何能讓eclipse遠端除錯正在執行的maven程式
maven在本身也是java程式,所以只要能讓maven執行時開啟遠端除錯埠,eclipse遠端除錯功能就可以附加到maven的JVM,就可以實現遠端除錯。
下面的命令就是示例在命令列執行java程式時開啟遠端除錯埠.-Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=y這一串引數就是用來開啟遠端除錯埠

java -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=y -jar target\facelog-service-1.0.10-SNAPSHOT-standalone.jar

既然maven也是個java程式,同理只要在maven執行時加上上面的引數就可以開啟遠端除錯埠了。

maven本身就提供了一個名為mvnDebug的指令碼程式,用於Debug方式執行,mvnDebug與mvn命令唯一的不同就是通過MAVEN_DEBUG_OPTS環境變數添加了開啟遠端除錯埠的JVM引數 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000

(參見mvnDebug指令碼)。

以下為mvnDebug(window版)的指令碼內容:

@setlocal
@set MAVEN_DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@ 設定環境變數後執行原來的mvn.md指令碼
@call "%~dp0"mvn.cmd %*

所以在命令列執行maven時,關鍵就是MAVEN_DEBUG_OPTS這個環境變數,只要這個環境變數設定了開啟遠端除錯埠的JVM引數,執行傳統的mvn命令,也可以實現遠端除錯。