在我的项目中,我有一个配置,如
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>default-cli</id>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<commandlineArgs>${additionalExecArgs} -jar ${project.build.directory}/someDir/some.jar</commandlineArgs>
<executable>java</executable>
<classpathScope>runtime</classpathScope>
</configuration>
</execution>
</executions>
</plugin>
使用Maven exec:exec
启动可执行JAR。
默认情况下,additionalExecArgs
属性为空。
在NetBeans中,我可以通过在nbactions.xml
文件中指定以下操作来运行此目标:
<action>
<actionName>run</actionName>
<goals>
<goal>exec:exec</goal>
</goals>
</action>
要在NetBeans中调试此目标,我已将以下操作添加到nbactions.xml
文件中:
<action>
<actionName>debug</actionName>
<goals>
<goal>exec:exec</goal>
</goals>
<properties>
<jpda.listen>true</jpda.listen>
</properties>
<activatedProfiles>
<activatedProfile>debug</activatedProfile>
</activatedProfiles>
</action>
因此,除了运行exec:exec
之外,它还将NetBeans(?)属性jpda.listen
设置为true并激活Maven配置文件debug
。
我还将以下Maven个人资料添加到我的POM中:
<profile>
<id>debug</id>
<properties>
<additionalExecArgs>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</additionalExecArgs>
</properties>
</profile>
使用此配置,我只需从项目上下文菜单/工具栏中运行调试操作。
但请注意jpda.address
Maven属性。这个属性似乎以某种方式被NetBeans填充。
如果我尝试使用IntelliJ或Eclipse中的调试配置文件运行exec:exec
我收到错误,可能是因为jpda.address
Maven属性没有设置。
E.g。我在IntelliJ中收到以下错误:
/usr/lib/jvm/java-8-oracle/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:42300,suspend=y,server=n -Dmaven.home=/usr/share/maven -Dclassworlds.conf=/usr/share/maven/bin/m2.conf -Dfile.encoding=UTF-8 -classpath /usr/share/maven/boot/plexus-classworlds-2.x.jar:/opt/idea-IC-141.1010.3/lib/idea_rt.jar org.codehaus.classworlds.Launcher -Didea.version=14.1.3 -Dmaven.repo.local=/home/someUser/.m2/repository exec:exec -P debug
Connected to the target VM, address: '127.0.0.1:42300', transport: 'socket'
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building test-application 0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- exec-maven-plugin:1.4.0:exec (default-cli) @ test-application ---
ERROR: transport error 202: connect failed: Verbindungsaufbau abgelehnt
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [debugInit.c:750]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
每次通话都会改变端口。
我已尝试使用固定地址/端口(例如127.0.0.1:8000)替换jpda.address
,但我收到了相同的错误,现在也在NetBeans中。
那么我如何在IntelliJ和Eclipse中获得与NetBeans类似的行为,并直接使用Maven运行配置调试exec:exec
目标,而无需使用远程调试器配置等?
答案 0 :(得分:0)
听起来您可以使用Remote debug
Maven目标在intellij中设置Before launch
配置。
按如下方式进行设置:
Run/Debug Configurations
- &gt;添加Remote
- &gt;添加Before Launch
- &gt; Maven
- &gt;指定正确的模块和目标。