【问题标题】:Debug a maven plugin's execution in a maven web-project在 maven web 项目中调试 maven 插件的执行
【发布时间】:2010-06-04 12:04:46
【问题描述】:

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

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

谢谢。

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

【问题讨论】:

    标签: debugging maven-2


    【解决方案1】:

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

    如果您不使用 m2eclipse,请运行 mvnDebug 而不是 mvn(对于 Maven 2.0.8+)并在端口 8000 上附加远程调试器。对于 Maven 2.0.8

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

    另见

    【讨论】:

    • @user320550:您的工作区中有插件的来源吗?如果没有,请尝试一下。
    • 其实这就是我尝试过的。我的工作区中有我的 Maven 项目设置。我还建立了一个 Maven 插件项目,其中包含插件的源代码。现在我转到我的 maven 项目的 pom.xml 位置并执行 mvndebug install。它给我的端口为 8000。现在我右键单击我的 maven 项目并选择远程调试并选择端口 8000。在源选项卡中,我将 maven 插件项目添加为源查找路径并单击远程调试。我在我的插件 java 文件中放置了断点。现在在我的 cmd 中,它似乎被卡住了,什么也不做......
    • @user320550:它似乎卡住了,什么也不做你真的没有到达断点吗?
    • 感谢您的帮助帕斯卡。它现在达到了我的断点,但是需要将近一分钟才能达到它。
    【解决方案2】:

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

    • 从命令行运行mvndebug 代替mvn 命令。 Maven 将开始启动并等待外部调试器出现在 TCP 端口上,然后再恢复。记下端口号。
    • 在 Eclipse 中配置自定义的远程调试配置。 (参见http://www.ibm.com/developerworks/library/os-ecbug/,远程调试) - 将端口号设置为 mvndebug 使用的端口号。还将您将用于调试的源文件放入调试配置中。
    • 启动远程调试配置。 Maven 应该会恢复,您将在 Eclipse 中发现错误。

    【讨论】:

      【解决方案3】:

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

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

      IDEA 的community edition 是免费的。

      【讨论】:

      • 我在 Eclipse 中或多或少地为我自己的插件做过同样的事情。
      • 有没有关于 Eclipse 的链接可以提供给我?
      • 你可以在maven.apache.org/eclipse-plugin.html找到两个“大”的 Maven Eclipse 插件
      • 谢谢。不过这和我们常用的rt的m2eclipse有关。我相信这没有任何信息 reg 调试。无论如何,我会尝试更深入地使用谷歌搜索
      【解决方案4】:

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

      mvnDebug clean install
      

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

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

      【讨论】:

      • [plus]1 提及 mvnDebug
      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-29
        • 1970-01-01
        • 2020-12-20
        • 2012-04-12
        • 1970-01-01
        • 1970-01-01
        • 2023-01-24
        • 2018-08-17
        相关资源
        最近更新 更多