调试maven插件在maven web项目中的执行

时间:2010-06-04 12:04:47

标签: debugging maven-2

有没有办法在maven插件运行时实际调试它。我的意思是,例如我们有maven-clean-plugin。所以,当这个插件执行它的动作时,我们可以以某种方式调试并检查maven-clean-plugin的源代码吗?

显然我们必须在eclipse中关联插件的Java源代码,但是如何设置它来进行调试呢?

感谢。

编辑:更改主题 对不起,伙计们也许我应该更加精确。实际上我有我的网络应用程序,它是一个maven项目,它使用第三方maven插件。现在,当我执行 mvn clean install 时,我需要调试我的第三方maven插件。现在在我的maven依赖项中,我没有得到对该插件jar的依赖,这很正常。有什么想法吗?

5 个答案:

答案 0 :(得分:40)

如果您将Eclipse与m2eclipse插件一起使用,只需使用 Debug As ... 而不是 Run as ... 启动您的构建。

如果您不使用m2eclipse,请运行mvnDebug而不是mvn(对于Maven 2.0.8+)并在端口8000上附加远程调试器。对于Maven 2.0.8<,添加远程启动脚本的debuggin选项。

当然,您需要在工作区中导入插件的源代码。

另见

答案 1 :(得分:11)

如果你想在eclipse中调试Maven执行,我就是这样做的,主要是命令行工具(没有使用Eclipse插件)(可能在某些时候关闭,我6个月没有这样做) :

  • 从命令行运行mvndebug代替mvn命令。 Maven将开始启动并等待外部调试器在恢复之前出现在TCP端口上。请注意端口号。
  • 在Eclipse中配置自定义远程调试配置。 (参见http://www.ibm.com/developerworks/library/os-ecbug/,远程调试) - 将端口号设置为mvndebug使用的端口号。还要在Debug配置中放置要用于调试的源文件。
  • 启动远程调试配置。 Maven应该恢复,你将在Eclipse中捕获bug。

答案 2 :(得分:7)

只需在命令中将mvn替换为mvnDebug

mvnDebug clean install

结果,JVM在端口8000处侦听调试器。为了更好地控制,您可以使用标准JVM调试参数设置MAVEN_OPTS环境变量:

export MAVEN_OPTS="-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"
mvn clean install

答案 3 :(得分:6)

这可能稍微偏了,因为我要谈谈IntelliJ IDEA。使用IDEA,您可以直接加载maven项目,然后只需右键单击其中一个构建生命周期阶段(清理,打包,安装等...)并选择调试。然后,IDE使用正确的类路径运行该阶段,并将您放入调试器中。

我已经使用调试器来调试我自己的几个插件。我从来没有尝试调试第三方插件,虽然我想如果jar中仍然有调试符号并且你有相应的源代码,这将是相对轻松的。

IDEA的community edition免费提供。

答案 4 :(得分:2)

在NetBeans 7.4中,右键单击项目>属性>动作。选择Build project操作(或任何其他操作),然后点击“设置属性”旁边的AddDebug Maven Build