【问题标题】:Shorter way for debugging Maven builds with eclipse使用 eclipse 调试 Maven 构建的更短方法
【发布时间】:2017-02-24 10:56:42
【问题描述】:

我在 Eclipse 中有一个 Maven 项目,我使用运行配置运行该项目。该配置使用我的pom.xml 中定义的脚本(称为runner)执行compileexec:exec,依赖于操作系统(Windows 中的.bat,Linux 中的.sh)。跑步者做与操作系统相关的事情,然后用我的应用程序启动 Java。使用如下配置文件指定要使用的跑步者:

<profile>
    <id>WINused</id>
        <activation>
            <os>
                <family>windows</family>
            </os>
        </activation>
        <properties>
            <runnerForLaunch>${basedir}/src/runners/windowsRunner.bat</runnerToUse>
        </properties>
    </profile>

所以,当我想运行它时,我使用Alt+Shift+X, M 并选择 Maven 配置。后来我就用Ctrl+F11了。

当我必须调试它时,我必须执行以下操作:

  1. 编辑pom.xml 以使用另一个将-agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=y 添加到Java 调用的运行器脚本。
  2. 启动运行配置。
  3. 启动连接到调试器的调试配置。

我的问题是,我能以某种方式缩短这个过程吗?我经常忘记撤消对pom.xml 的更改并使用我目前不需要的跑步者。 Maven 不能以某种方式检测我是否使用 Run asDebug as 运行它并根据它调整变量吗?

【问题讨论】:

    标签: java eclipse maven debugging


    【解决方案1】:

    如果你的 POM 中的运行器配置支持命令行参数:

    • 创建另一个配置文件,其中包含:

      <profile>
        <id>debug</id>
        <properties>
          <debugArgument>-agentlib: ...</debugArgument>
        </properties>
      </profile>
      
    • 在以下位置使用新属性:

      <runnerForLaunch>${basedir}/src/runners/windowsRunner.bat ${debugArgument}</runnerToUse>
      
    • 在您的调试配置中将debug 添加到Profiles:

    • 在脚本中的 Java 调用中使用 %1$1

    或者:

    • 声明并提供属性值&lt;debugArgument&gt;debug&lt;/debugArgument&gt;
    • 在您的脚本中评估 %1$1 并相应地使用不同的参数调用 Java。

    或者:

    • 在您的调试配置中将属性 debugArgument 与 1) debug 或 2) -agentlib: ... 添加到 Parameter Name / Value
    • 使用以下属性:

      <runnerForLaunch>${basedir}/src/runners/windowsRunner.bat ${debugArgument}</runnerToUse>
      
    • 1) 为 debug 评估 %1$1 并使用不同的参数调用 Java,或者 2) 在脚本中的 Java 调用中使用它们。

    【讨论】:

    • 所以你基本上说我应该有一个运行配置和一个调试配置?这可能会稍微缩短该过程,但不幸的是 Eclipse 的 Ctrl+F11 / F11 总是运行最近使用的配置。 Ctrl+F11 运行最近使用的最后一个 run 配置和F11 最后一个 debug 配置没有区别。
    • @Bowi 很遗憾,这是真的。这是因为没有两种不同类型的运行/调试配置。相应的工具栏下拉菜单只是收藏夹视图。 F11 只是在到达断点时切换到调试视图。
    • 而且 xy 配置无法确定它是使用 run 还是 debug 启动的?
    【解决方案2】:

    通常,您不需要添加调试选项,因为 Eclipse 在调试 maven 项目时只是通过调用“mvnDebug”而不是“mvn”来添加它们。我建议您在运行 Java 应用程序之前简单地运行 shell 脚本,然后使用 exec:java 启动 Java 应用程序,以便让它在附加到 eclipse 调试器的 maven 进程中运行。

    【讨论】:

      猜你喜欢
      • 2012-09-17
      • 2015-11-28
      • 1970-01-01
      • 2013-08-23
      • 2016-06-02
      • 2014-03-13
      • 1970-01-01
      • 2013-12-12
      • 1970-01-01
      相关资源
      最近更新 更多