2009-12-14 67 views
3

我有一個scala項目,我使用Maven和maven-scala-plugin進行編譯。我需要在編譯的類中包含調試信息,並且我想知道是否有方法要求Maven或Scala插件來執行此操作。我發現this page使它聽起來可能,但不清楚將參數放在pom.xml中的位置。通過Maven編譯調試信息的scala類

如果可能,我希望這個選項是在pom.xml中指定的,而不是在命令行中指定的。

回答

8

編譯.class帶有調試信息的文件需要在maven-scala-plugin級別完成。在maven-compiler-plugin處做這件事 - 順便說一下,我們可以在debug選項的文檔中看到默認爲true的默認方式 - 這是沒用的,因爲它沒有編譯Scala源代碼。現在

,如果我們看一下scalacman page,在scalac編譯器有一個–g選項,可以採取以下值:

none」生成沒有調試信息,
source」只有產生源文件屬性
line」生成源和行號信息,
vars」生成源,行號和局部變量信息離子,
notc」生成所有上述內容,不會執行尾部呼叫優化。

的好消息是,scala:compile具有可用於傳遞編譯additionnals參數一個不錯的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等其他地區),因爲這不是你要求的:)

+0

@帕斯卡爾完美地工作。謝謝。 – Dave 2009-12-14 17:29:52