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/jflextarget/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 に答える