我在{sbt(0.12)的主要javac阶段之前使用sbt-jflex插件通过JFlex生成Java源代码。
该插件是ANTLR插件的一个副本,我发现this question显示了如何使用后者。
所以我在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
也是如此。
答案 0 :(得分:0)
在尝试注入调试打印后,我发现sbt-jflex插件假定源位于src/main/flex
,而我的项目将它们放在src/main/jflex
中。添加以下修复程序:
sourceDirectory in jflex <<= (sourceDirectory in Compile) { _ / "jflex" }