Сломанная компиляция SBT - ошибка или особенность?
Я сталкиваюсь со следующей проблемой при использовании SBT. Если я добавлю эту строку в build.sbt:
unmanagedResourceDirectories in Compile <+= baseDirectory( _ / "src/main/scala" )
Инкрементная компиляция очень сложно и не очень хорошо. Полный пример того, как воспроизвести ошибку, находится здесь: https://github.com/vn971/sbt-incremental-bug
Это в основном 2 файла. Implicits.scala:
object MyImplicits {
implicit def stringToInt(str: String) = 1
}
И Usage.scala:
import MyImplicits._
object MyUsage {
def a: Int = ""
}
Теперь, чтобы воспроизвести ошибку инкрементной компиляции, вы должны внести соответствующие изменения в эти файлы:
- закомментируйте метод в Usage.scala. Сохраните файл, перекомпилируйте.
- раскомментируйте, сохраните и заново скомпилируйте.
- закомментируйте метод в Implicits.scala. Сохраните файл, перекомпилируйте.
Поскольку MyImplicits.stringToInt, несомненно, используется в Usage.scala, он не должен компилироваться. Но это так, с добавочной компиляцией.
Мысли? Вопросы? Если вам нужно больше деталей, чем уже предоставлено, посмотрите минималистичный проект, на который я ссылался.