Создание исходных текстов Java с плагином sbt JFlex
Я дергаю себя за волосы, используя плагин sbt-jflex для генерации Java-источников через JFlex, перед основной фазой javac sbt (0.12).
Плагин является клоном плагина ANTLR, и я нашел этот вопрос, который показывает, как использовать последний.
Итак, у меня есть следующее в project/plugins.sbt
:
addSbtPlugin("org.scalanlp" % "sbt-jflex" % "0.1-SNAPSHOT")
И это в ./build.sbt
:
jflexSettings
sourceGenerators in Compile <+= generate in jflex
Но я, должно быть, либо делаю что-то не так, либо фаза javac предшествует исходным генераторам, потому что когда я запускаю sbt compile
Я никогда не вижу сообщения "JFlex: Using JFlex version X to generate source files"
, Вместо этого sbt идет прямо к компиляции исходников Java
[info] Compiling 91 Java sources to ...
И затем происходит сбой, потому что на этом этапе отсутствует вывод JFlex. Бег source-directories
показывает, что src/main/jflex
действительно включен, как есть target/src_managed/main
,
1 ответ
Поиграв с инъекцией отладочных отпечатков, я обнаружил, что плагин sbt-jflex предполагает, что источники находятся в src/main/flex
тогда как в моем проекте они есть src/main/jflex
, Добавление следующего исправляет это:
sourceDirectory in jflex <<= (sourceDirectory in Compile) { _ / "jflex" }