Бесформенные разрывы sbt инкрементная компиляция
У меня есть проект Scala, который я строю с использованием SBT 13,5.
Поскольку я реализовал модуль с использованием бесформенного кода, всякий раз, когда sbt пытается постепенно компилировать проект, он не может разрешить требуемые последствия:
[...] не удалось найти неявное значение для преобразователя параметров [...]
[...] не удалось найти неявное значение для папки параметров [...]
и так далее.
sbt clean
а также sbt compile
решает проблему, но проект довольно большой, и это, в свою очередь, сильно замедляет время компиляции и мою производительность, поскольку новая сборка может занять несколько минут.
Есть идеи, что здесь происходит?
некоторая дополнительная информация
Итак, после некоторого размышления я сделал некоторую гипотезу. Эта проблема возникает при использовании бесформенных записей, и, глядя на сгенерированные файлы, я думаю, что это может быть проблема с макросом, который генерирует тип синглтона для каждого ключа записи.
Мой модуль занимает HList
из ColParser[T, K]
объявлен как:
sealed trait ColParser[T, K] {
val columnL Witness.Aux[K]
}
Таким образом, компилятор генерирует Witness
для каждого ColParser
используя макрос, и я боюсь, что sbt теряет отслеживание сгенерированных макросов при принятии решения о том, что перекомпилировать, но это всего лишь отрывочная гипотеза.
Фактически, всякий раз, когда я изменяю что-то в коде, который вызывает мой модуль (например, я добавляю / удаляю ColParser
от HList
), Я получаю вышеуказанную ошибку. Принудительная перекомпиляция модуля (путем удаления сгенерированного .class
) исправляет проблему.