通过Maven使用调试信息编译scala类

时间:2009-12-14 14:51:54

标签: maven-2 scala debugging maven-plugin

我有一个scala项目,我使用Maven和maven-scala-plugin进行编译。我需要在编译的类中包含调试信息,我想知道有没有办法让Maven或scala插件执行此操作。我发现this page使声音成为可能,但不清楚将params放在pom.xml中的位置。

如果可能的话,我希望这个选项是在pom.xml中而不是在命令行中指定的。

1 个答案:

答案 0 :(得分:9)

需要在maven-scala-plugin级别编译包含调试信息的.class个文件。在maven-compiler-plugin执行此操作 - 正如我们在默认为true的debug选项的文档中所看到的那样,这是无用的,因为它不会编译您的Scala源。

现在,如果我们查看scalac man pagescalac编译器会有一个–g选项,可以采用以下值:

  

none”不会生成调试信息,
  “source”仅生成源文件属性,
  “line”生成来源和行号信息,
  “vars”生成源,行号和局部变量信息,
  “notc”生成以上所有内容,不会执行尾调用优化。

好消息是scala:compile有一个很好的args可选参数,可用于传递编译器附加参数。因此,要使用它并将-g选项传递给scala编译器,您只需要配置maven插件,如下所示:

  <plugin>
    <groupId>org.scala-tools</groupId>
    <artifactId>maven-scala-plugin</artifactId>
    <version>2.9.1</version>
    <executions>
      <execution>
        <goals>
          <goal>compile</goal>
          <goal>testCompile</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <args>
        <arg>-g:notc</arg>
      </args>
      ...
    </configuration>
  </plugin>

我正在跳过配置的其他部分(例如repositoriespluginRepositories等),因为这不是您所要求的:)