我有一个scala项目,我使用Maven和maven-scala-plugin进行编译。我需要在编译的类中包含调试信息,我想知道有没有办法让Maven或scala插件执行此操作。我发现this page使声音成为可能,但不清楚将params放在pom.xml中的位置。
如果可能的话,我希望这个选项是在pom.xml中而不是在命令行中指定的。
答案 0 :(得分:9)
需要在maven-scala-plugin
级别编译包含调试信息的.class
个文件。在maven-compiler-plugin
执行此操作 - 正如我们在默认为true的debug
选项的文档中所看到的那样,这是无用的,因为它不会编译您的Scala源。
现在,如果我们查看scalac
man page,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>
我正在跳过配置的其他部分(例如repositories
,pluginRepositories
等),因为这不是您所要求的:)