Проблема в том, что что есть часть нашей сборки, которая использует наш специальный процессор аннотаций (называемый Carbide) для создания методов для вызовов DAO и т. д., которыми мы управляем. Вот соответствующая часть нашего build.sbt:
Код: Выделить всё
Compile / compile := (Compile / compile dependsOn Def.task({
(Compile / managedSourceDirectories).value.head.mkdirs()
})).value,
Compile / javacOptions ++= Seq("-s", (Compile / managedSourceDirectories).value.head.getAbsolutePath)
Код: Выделить всё
Carbide
В scala 3.3.3. наша цель/scala-3.3.3/src_managed/main/ всегда создается (и пуст), но мы никогда не завершаем этап компиляции Scalac, поэтому наши javacOptions фактически никогда не запускаются (поскольку javac-часть сборки никогда не вызывается).
Ошибки, которые мы получаем от компилятора scala после запуска sbt clean compile, имеют следующий вид:
Код: Выделить всё
[error] -- [E008] Not Found Error:.../DefaultCompetitionYearResource.java:8:39
[error] 8 |import shared.models.core.querybuilder.CompetitionYearQueryBuilder;
[error] | ^
[error] | value querybuilder is not a member of shared.models.core
Это Классы querybuilder обычно создаются после завершения компиляции Scala, но до начала основной компиляции Java. Вот фрагмент журнала отладки успешной компиляции sbt clean с использованием Scala 2.13.14.
Код: Выделить всё
[debug] Scala compilation took 2.762843833 s
[debug] Attempting to call com.sun.tools.javac.api.JavacTool@2137f8f8 directly...
[info] Annotation processing is enabled because one or more processors were found
[querybuilders are put into src_managed dir]
[info] Carbide warning: Unknown type: com.fasterxml.jackson.databind.JsonNode - skipping field: MasterSurveySchedule.template [These warnings are expected and okay]
[info] Carbide warning: Unknown type: byte[] - skipping field: ResourceBlob.resourceFile
[info] /Users/jludy/shared/app/shared/models/core/UnitTagGroup.java: Recompile with -Xlint:unchecked for details.
[debug] Java compilation took 11.978637459 s
[debug] [zinc] classfile.Parser parsing shared.models.core.querybuilder.support.DefaultAccountResolutionTypeQueryBuilderNode
[classfile.Parser then looks at all our java classses]
....
[debug] Java compilation + analysis took 14.683763333 s
[debug] done compiling
[debug] Registering generated classes:
[debug] SsoRequireSetting$2.class
[debug] Exceptions$FillRecursionException.class
[Then the rest are registered]
....
- Скомпилировать наши исходные коды src_managed перед запуском компилятора Scala.
- Каким-то образом заставить компилятор Scala не просматривать классы Java, связанные с нашими queryBuilder
Подробнее здесь: https://stackoverflow.com/questions/791 ... n-upgradin