2013-10-10 2 views
4

Я иногда играю с вилками Scala и иногда должен отлаживать эти вилки на проектах SBT. В целом, scalaHome отлично работает, но есть несколько вещей, которые я бы хотел найти, чтобы найти лучшие способы достижения.Использование sbt с пользовательскими строками Scala

1) Возможно ли, чтобы SBT собирал пользовательские файлы класса scalac, созданные сборкой ant quick, а не jar-файлами, испускаемыми сборкой ant pack? Последнее подразумевает 5-10 секунд дополнительной задержки на сборку, поэтому было бы здорово избежать этого.

2) Даже в больших проектах проблемы, проявляемые скаляром, обычно проявляются при компиляции отдельных файлов. Есть ли способ сказать sbt игнорировать эвристику отслеживания изменений и перекомпилировать только один файл? Особенно хотелось бы предотвратить перекомпиляцию всего мира при перекомпиляции scalaHome или изменении флагов скаляса.

3) Можно ли иметь классы масштабирования sbt hot reload, исходящие от scalaHome, когда scalaHome перекомпилируется? В настоящее время мне нужно отключить и перезапустить sbt, чтобы применить изменения.

+1

Вы можете предоставить образец файла сборки sbt, демонстрирующий проблемы (проблемы)? Насколько я знаю, 'quick' не является стандартной командой sbt, поэтому у вас, вероятно, есть плагин, это поможет узнать, какой из них ... – Jean

+1

Извините за путаницу. Я имел в виду задачу 'quick' ant от сборки' scalac', которая создает классные файлы, которые составляют компилятор, в отличие от задачи 'pack', которая упаковывает эти файлы классов в' scala-compiler.jar'. Я уточнил вопрос, чтобы быть более точным. –

ответ

3

1) Нет, это заставило бы sbt зависеть от деталей сборки Scala. Если бы Scala была построена с помощью sbt, вы могли бы зависеть от Scala как источника зависимости или, по крайней мере, это, вероятно, можно было бы поддерживать без слишком большого количества изменений.

2) Нет, см https://github.com/sbt/sbt/issues/604

3) SBT 0,13 следует проверить последние измененные времена баночки поступающих из scalaHome и использовать новый загрузчик класса. Это ошибка, если это не так.

Смежные вопросы