2012-12-15 61 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" }