Я пытаюсь включить макроаннотации в свой проект. Следуя документации , я попытался реализовать их пример.
Мне известно, что макромодуль должен быть скомпилирован перед модулем ядра (ядро - это модуль, содержащий код, который использует аннотации макросов). Для этого я создал следующий build.sbt (версия 1.2.8):
name := "test"
lazy val commonSettings = Seq(
version := "0.1",
scalaVersion := "2.12.8"
)
lazy val macros = (project in file("macros")).settings(
commonSettings,
libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value
)
lazy val core = (project in file("core")).settings(
commonSettings
) dependsOn macros
Структура моего проекта следующая:
+-- .idea
+-- core
| +-- src
| | +-- java
| | +-- scala
| | | +-- Test.scala
+-- macros
| +-- src
| | +-- java
| | +-- scala
| | | +-- identity.scala
...
Однако, когда я использую аннотацию @identity
в классе Test, я все равно получаю сообщение о том, что аннотация макроса не расширена (из-за @compileTimeOnly("enable macro paradise to expand macro annotations")
). Есть идеи, почему?