http://d.hatena.ne.jp/wistery_k/20120813
なんとなくプロジェクトディレクトリのルートでln -s src/main/scala/jp/wistery/Hoge.scala してたらエラーが出てハマった。
さすがにsrc以下だけコンパイル対象にしてると思ったらそんなことはなくて、
別々のソースコードと思われて、2重にコンパイルされたよう。
そうなんです、詳しい経緯はしらないけど、src/main/scala 以外に、ルートディレクトリはデフォルトだとソースディレクトリになってます。
で、多分以下の数行をbuild.sbtに書けばできるはず*1
unmanagedSources in Compile <<= (unmanagedSources in Compile, baseDirectory) map {
(srcs,b) => srcs filterNot (b * "*").get.toSet
}
自分も、たまにハマったことあるし、他にもこれを感じている人がいたらしく、これを簡単に設定できるKeyがちょっと前に追加されたのですが
https://github.com/sbt/sbt/issues/494
残念ながら sbt 0.12.0 の時点では*2 含まれていないようです。この変更が入ったversionがリリースされれば(0.12.1から入りました) 以下のように書くだけでいけるようになるはずです
sourcesInBase := false