2012-12-15 29 views
0

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

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

在使用注入调试打印后,我发现sbt-jflex插件假定源位于src/main/flex,而我的项目在src/main/jflex中有。添加以下修复它:

sourceDirectory in jflex <<= (sourceDirectory in Compile) { _/"jflex" }