我有以下问题: 我有我的播放应用程序让我们称之为PlayApp。在这个Play应用程序中我创建了子项目(在playApp中的dir / MyLib中)让我们称之为MyLib。这个MyLib项目有一些带有类注释的宏。我想在PlayApp中使用该注释。所以我创建了这个MyLib,我让PlayApp依赖于MyLib。一切正常。这是我的PlayApp / build.sbt
...
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0-M5" cross CrossVersion.full)
lazy val root = (project in file(".")).enablePlugins(PlayScala).aggregate(MyLib).dependsOn(MyLib)
lazy val MyLib = project
...
我知道PlayApp应该依赖于MyLib,它应该在另一个编译运行中编译。但我想从这个MyLib项目中制作jar。所以我用
做了sbt assembly
在/ MyLib中然后我将jar放在我项目的/ lib中。一切都很好,我可以看到从MyLib.jar编译的类,但我得到编译错误:
编译错误
无法扩展宏注释(最常见的原因是您需要启用宏天堂插件;另一种可能性是您尝试在定义它的同一编译运行中使用宏注释)< / em>的
这对我来说是个熟悉的错误。这看起来像是试图在与PlayApp相同的编译运行中编译宏。有谁知道解决方案?
编辑:
我发现了这个。我在我想要使用它的项目类中双重导入了我的宏注释...你通常将你的库打包到jar中,将它放在你的Play应用程序中的/ lib中,然后在build.sbt中添加这个编译器插件。我的错误与该程序无关。仔细检查导入,这是另一种看到此编译错误的可能性。