2017-02-24 97 views
1

我在eclipse中有一个Maven项目,我使用Run配置运行该项目。该配置包含compileexec:exec,其中有一个脚本(称为转轮),该脚本取决于操作系统(Windows中的.bat,Linux中的.sh)在我的pom.xml中定义。跑步者执行操作系统相关的东西,然后用我的应用程序启动Java。哪个运动员使用与类似如下的配置文件规定:更简单的调试方法Maven使用eclipse构建

<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以某种方式检测,如果我运行它运行调试为并调整变量取决于?

回答

1

如果您的POM亚军配置支持命令行参数:

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

    <profile> 
        <id>debug</id> 
        <properties> 
        <debugArgument>-agentlib: ...</debugArgument> 
        </properties> 
    </profile> 
    
  • 使用这个新属性:

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

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

或者:

  • 申报和提供的<debugArgument>debug</debugArgument>的属性值。
  • 在您的脚本中评估%1$1并相应地调用具有不同参数的Java。

或者:

  • 添加属性debugArgument 1)debug或2)-agentlib: ...参数名称/在调试配置。
  • 使用属性:

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

所以你基本上说我应该有一个运行配置和调试配置?这可能会缩短这个过程,但不幸的是,Eclipse的“Ctrl + F11”/“F11”总是运行最近一次使用的配置。它没有区分'Ctrl + F11'运行最近使用的* run *配置,'F11'运行最后一个* debug *配置。 – Bowi

+0

@Bowi可悲的是,这是事实。这是因为没有两种不同类型的运行/调试配置。相应的工具栏下拉菜单就是收藏夹视图。如果达到断点,'F11'只是切换到Debug视图。 –

+0

xy配置无法确定它是否已经使用* run *或* debug *启动? – Bowi

0

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