Компиляция классов Scala с отладочной информацией через Maven - PullRequest
3 голосов
/ 14 декабря 2009

У меня есть проект Scala, в котором я использую Maven и maven-scala-plugin для компиляции. Мне нужно включить отладочную информацию в скомпилированные классы, и мне было интересно, есть ли способ попросить Maven или плагин scala сделать это. Я нашел эту страницу , которая делает звучание возможным, но не ясно, куда поместить параметры в pom.xml.

Если возможно, я бы хотел, чтобы этот параметр был указан в файле pom.xml, а не в командной строке.

1 Ответ

9 голосов
/ 14 декабря 2009

Компиляция .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>

Я пропускаю другие части конфигурации (например, repositories, pluginRepositories и т. Д.), Так как это не то, что вы просите:)

...