请注意,这不是IntelliJ错误,并且在项目中启动sbt
时直接从SBT运行时出现:
C:\Users\brand\Documents\GitHub\scalajs-cross-compile-example\build.sbt:27: error: type mismatch;
found : sbt.Project
required: sbt.internals.DslEntry
fooJVM.enablePlugins(SbtXjcPlugin)
我正在使用带有两个更改行(on github)的scala-js交叉编译项目的规范示例。
正如您可以检查的那样,唯一的区别是我在plugins.sbt中添加了另一个插件:
addSbtPlugin("org.scala-sbt.plugins" % "sbt-xjc" % "0.8")
我将此行添加到buid.sbt
:
fooJVM.enablePlugins(SbtXjcPlugin)
不可否认,这是一个人为的例子,但我确实有理由想要为JVM项目启用插件,如有必要,我可以详细介绍。
答案 0 :(得分:1)
您不得在fooJVM
上拨打任何内容(文档中的pitfalls部分说明了这一点。)
相反,请使用jvmConfigure
:
lazy val foo = crossProject.in(file(".")).
// stuff
jvmConfigure(_.enablePlugins(SbtXjcPlugin))
您需要执行此操作的原因是enablePlugins
返回已修改的Project
的新实例。因此,foo.jvm
和fooJVM
不再是同一个项目了。
但是,正如您可能会注意到的,这不是您的构建文件失败的原因:在您的特定情况下,构建失败,因为sbt不允许这样的“裸”语句。这是有道理的,因为它们由于同样的原因没有做任何事情:enablePlugins
在启用插件的情况下返回新的Project
但不会改变接收器。