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

Dav*_*ave 3 debugging maven-2 scala maven-plugin

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

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

Pas*_*ent 9

.class需要在该maven-scala-plugin级别上编译包含调试信息的文件.maven-compiler-plugin在默认情况下执行此操作- 正如我们在debug默认为true 的选项的文档中看到的那样- 没有用,因为它没有编译Scala源代码.

现在,如果我们查看scalac 手册页,scalac编译器有一个–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>
Run Code Online (Sandbox Code Playgroud)

我跳过配置的其它部分(如repositories,pluginRepositories等),因为这不是你问的:)