0

在 sbt (0.12) 的主要 javac 阶段之前,我正在使用sbt-jflex插件通过 JFlex 生成 Java 源代码。

该插件是 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.

4

1 回答 1

0

在尝试了注入调试打印之后,我发现 sbt-jflex 插件假定源在,src/main/flex而我的项目在src/main/jflex. 添加以下修复它:

sourceDirectory in jflex <<= (sourceDirectory in Compile) { _ / "jflex" }
于 2012-12-15T17:14:31.027 回答