sroot中_root_的含义

时间:2018-12-14 02:16:49

标签: scala sbt

我有两个单独的Scala项目。在两个项目中,build.sbt都具有以下行:

lazy val V = _root_.scalafix.sbt.BuildInfo

两个项目包含多个项目,因此两个build.sbt文件都是多项目构建。在研究中,我遇到了一个根项目的想法,我认为上述值中的_root_表示根项目。

我的问题是,在其中一个项目中,sbt无法解析scalafix中的符号lazy val V = _root_.scalafix.sbt.BuildInfo。当我在该项目中搜索scalafix.sbt.BuildInfo时,我可以找到相关的jar,但是sbt某种程度上错过了它。据我所知,这两个项目几乎相同,但一个解决了scalafix,而另一个解决了。

对于两个项目,jar似乎都位于Mac的以下目录中:

/Users/soft/.ivy2/cache/scala_2.12/sbt_1.0/ch.epfl.scala/sbt-scalafix/jars/sbt-scalafix-0.6.0-M19.jar!/scalafix/sbt

什么是_root_?我如何帮助sbt解决scalafix

1 个答案:

答案 0 :(得分:1)

  

我认为上述值中的 root 表示根项目。

不,这是不正确的。

所有sbt文件都是scala代码,_root_与scala中的_root_含义相同。因此,答案与What is the root package in Scala中的答案相同。

  

据我所知,这两个项目几乎相同,但是一个解决了scalafix,而另一个解决了。

问题很可能是缺少sclafix插件。

检查

project/plugins.sbt中是否启用了插件
addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.9.1")