I’ve created Java annotations (since I need run time retention) under $PROJECT/src/main/java and my scala codewhich uses these java annotations us under $PROJECT/src/main/scala. The Java annotation thus created also makes use of a Java ENUM as it’s value.
If I compile the project then sbt doesn’t seem to compile the Java annotations first and errors out on each usage of the enum in annotations. If I comment out all usages of the Java enum in annotations in scala code and do a compile, uncomment enum usage and compile again it all works fine.
How do I ensure that sbt compiles my java annotations and enum (i.e. $PROJECT/src/main/java) before attempting to compile scala code when doing a clean build?
EDIT: I have a bare bones build.sbt and am using sbt 0.11.2
Some good news: This is a known issue and has been resolved.
Some bad news: It’s resolved in 2.10 and the fix may not be backported to 2.9.3 (quoting Paul Phillips in the issue thread):
Some good news: If you’re stuck on pre-2.10 and your Java sources don’t depend on your Scala sources, you can just add the following to your
build.sbtand all is well:Some bad news: If you’re stuck on pre-2.10 and your Java sources do depend on your Scala sources, I’m pretty sure you’re out of luck, and the comment-compile-uncomment trick is probably your best bet.