我正在使用maven运行spring集成测试。我试图在启用调试端口的情况下运行它,以便我可以从IntelliJ构思中附加它。
以下命令行过去常用。它曾用于允许surefire启动初始化,然后在继续测试之前等待连接到端口8000:
-Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -Xnoagent -Djava.compiler=NONE" -DtestIntegration test
然而现在这给了我以下例外:
[错误]在当前项目和插件组[com.zillow,org.apache.maven.plugins,org.codehaus.mojo]中找不到前缀'runjdwp'的插件,可从存储库[local(/) home / ferozed / .m2 / repository-p4),nexus(http://repo.zillow.local/content/groups/public)] - > [帮助1] org.apache.maven.plugin.prefix.NoPluginFoundForPrefixException:在当前项目和插件组[com.zillow,org.apache.maven.plugins,org.codehaus.mojo]中找不到前缀'runjdwp'的插件存储库[local(/home/ferozed/.m2/repository-p4),nexus(http://repo.zillow.local/content/groups/public)] 在org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver.resolve(DefaultPluginPrefixResolver.java:93) 在org.apache.maven.lifecycle.internal.MojoDescriptorCreator.findPluginForPrefix(MojoDescriptorCreator.java:260) 在org.apache.maven.lifecycle.internal.MojoDescriptorCreator.getMojoDescriptor(MojoDescriptorCreator.java:220) 在org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator.calculateTaskSegments(DefaultLifecycleTaskSegmentCalculator.java:106) at org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator.calculateTaskSegments(DefaultLifecycleTaskSegmentCalculator.java:86) 在org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:98) 在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317) 在org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152)
我有什么想法可以让它发挥作用吗?
答案 0 :(得分:3)
我记得之前处理过这件事。您使用的调试选项可能已在您的Java版本中弃用。 Java 5及其下使用-Xrunjdwp
。我相信Java 7及以上版本(不确定6,使用两者?)使用agentlib:jdwp
。我建议在SO上查看这个答案。
答案 1 :(得分:0)
没有任何插件方法(-Xrunjdwp或-Xagentlib)为我工作。
所以,我放弃并使用-DforkMode =运行测试永远不会用于surefire插件,并确保测试在maven执行过程中运行。然后我可以附上这个过程。
我在其他地方读到这不安全,因为调用的类路径可能会与测试的类路径共享,但我找不到任何其他方法来使我的场景工作。