Scala宏天堂使用jar而不是多项目构建在游戏框架中

时间:2015-09-02 09:38:17

标签: scala playframework sbt sbt-assembly scala-macro-paradise

我有以下问题: 我有我的播放应用程序让我们称之为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中添加这个编译器插件。我的错误与该程序无关。仔细检查导入,这是另一种看到此编译错误的可能性。

0 个答案:

没有答案