Компиляция аннотаций Java с помощью sbt

Я создал аннотации Java (так как мне нужно сохранение времени выполнения) под $PROJECT/src/main/java и мой код Scala, который использует эти аннотации Java под нами $PROJECT/src/main/scala, Созданная таким образом аннотация Java также использует Java ENUM в качестве значения.

Если я скомпилирую проект, то sbt, похоже, не будет сначала компилировать аннотации Java и выдает ошибки при каждом использовании перечисления в аннотациях. Если я закомментирую все случаи использования перечисления Java в аннотациях в коде scala и произвожу компиляцию, раскомментирую использование перечисления и снова скомпилирую, все работает нормально.

Как мне убедиться, что sbt компилирует мои java-аннотации и enum (т.е. $PROJECT/src/main/java) прежде чем пытаться скомпилировать scala-код при выполнении чистой сборки?

РЕДАКТИРОВАТЬ: у меня есть голые buildsb.sbt и я использую sbt 0.11.2

2 ответа

Решение

Некоторые хорошие новости: это известная проблема, которая была решена.

Некоторые плохие новости: это исправлено в 2.10, и исправление не может быть перенесено в 2.9.3 (цитируя Пола Филлипса в теме выпуска):

Я отметил это для бэкпорта, что не является гарантией; У меня нет времени, чтобы сделать это прямо сейчас, но я ожидаю в ближайшем будущем.

Некоторые хорошие новости: если вы застряли на pre-2.10 и ваши исходные коды Java не зависят от исходных текстов Scala, вы можете просто добавить следующее в свой build.sbt и все хорошо

compileOrder := CompileOrder.JavaThenScala

Некоторые плохие новости: если вы застряли на pre-2.10 и ваши исходники Java зависят от ваших исходных кодов Scala, я уверен, что вам не повезло, и трюк с комментариями, компиляцией и комментариями, вероятно, является лучшим выбором.

Могу поспорить, вы столкнулись с SI-2764. Это было исправлено в Scala 2.10.

Тем временем создайте отдельный подпроект для своих аннотаций Java и зависит от этого от проекта, содержащего код Scala. Тогда компилятор Scala будет обрабатывать только файлы.class, а не файлы.java.

Другие вопросы по тегам