加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

SBT解析器在build.sbt中工作,不在Build.scala中工作

发布时间:2020-12-16 09:54:36 所属栏目:安全 来源:网络整理
导读:曾几何时,在遥远的土地上,存在一个带有一个project / build.sbt文件的项目,如下所示: resolvers += Resolver.url("scala-js-snapshots",url("http://repo.scala-js.org/repo/snapshots/"))(Resolver.ivyStylePatterns)addSbtPlugin("org.scala-lang.modules
曾几何时,在遥远的土地上,存在一个带有一个project / build.sbt文件的项目,如下所示:

resolvers += Resolver.url("scala-js-snapshots",url("http://repo.scala-js.org/repo/snapshots/")
)(Resolver.ivyStylePatterns)

addSbtPlugin("org.scala-lang.modules.scalajs" % "scalajs-sbt-plugin" % "0.2-SNAPSHOT")

在项目加载时,事情看起来很棒,并且土地上有和平:

[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] downloading http://repo.scalajs.org/repo/snapshots/org.scalalang.modules.scalajs/scalajs-sbtplugin/scala_2.10/sbt_0.13/0.2-SNAPSHOT/jars/scalajs-sbt-plugin.jar ...
[info]  [SUCCESSFUL ] org.scala-lang.modules.scalajs#scalajs-sbt-plugin;0.2SNAPSHOT!scalajs-sbt-plugin.jar (1936ms)
[info] Done updating.

有一天,又创建了另一个项目.与第一个项目不同,这个项目既大又复杂,所以它有一个项目/项目/ Build.scala,如下所示:

import sbt._
import Keys._
object Build extends sbt.Build {
  import sbt._

  override lazy val projects = Seq(root)
  lazy val root =
    Project("plugins",file("."))
      .settings(
        resolvers += Resolver.url("scala-js-snapshots",url("http://repo.scala-js.org/repo/snapshots/")
        )(Resolver.ivyStylePatterns),addSbtPlugin("org.scala-lang.modules.scalajs" % "scalajs-sbt-plugin" % "0.2-SNAPSHOT")
      )
      .dependsOn(uri("../../scala-js-resource/plugin"))
      .dependsOn(uri("../../scala-js-workbench"))
}

在我看来,这应该以与早期安排相同的方式设置SBT插件.毕竟,什么是build.sbt但是一堆设置?唯一的区别是它依赖于其他一些本地项目,因此不能是一个简单的.sbt文件.

但在加载时,发生了一件可怕的事:

[warn]  module not found: org.scala-lang.modules.scalajs#scalajs-sbt-plugin;0.2-SNAPSHOT
[warn] ==== typesafe-ivy-releases: tried
[warn]   http://repo.typesafe.com/typesafe/ivy-releases/org.scalalang.modules.scalajs/scalajs-sbt-plugin/scala_2.10/sbt_0.13/0.2-SNAPSHOT/ivys/ivy.xml
[warn] ==== sbt-plugin-releases: tried
[warn]   http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/org.scalalang.modules.scalajs/scalajs-sbt-plugin/scala_2.10/sbt_0.13/0.2-SNAPSHOT/ivys/ivy.xml
[warn] ==== local: tried
[warn]   C:UsersHaoyi.ivy2localorg.scala-lang.modules.scalajsscalajs-sbt-pluginscala_2.10sbt_0.13.2-SNAPSHOTivysivy.xml
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/org/scala-lang/modules/scalajs/scalajs-sbt-plugin_2.10_0.13/0.2-SNAPSHOT/scalajs-sbt-plugin-0.2-SNAPSHOT.pom

愚蠢的Build.scala,你甚至没有尝试我给你的解析器!我甚至告诉你在哪里寻找该死的模块,为什么你甚至没有尝试就放弃了?你的小兄弟build.sbt发现它非常好.

任何人都知道什么给我,以及我如何使Build.scala像我想要的那样工作?

解决方法

project / build.sbt不是project / Build.scala的小兄弟.前者定义了sbt插件,而后者是实际的构建文件.如果你愿意,它的小弟弟将是< root-dir> /build.sbt.

您应该将插件定义保留在project / build.sbt中.拥有这两个文件没有任何问题.

您的项目定义(以及dependsOn)应该在project / Build.scala中,或者您使用< root-dir> /build.sbt,在sbt 0.13中,您基本上可以执行以前仅限于Build.scala的所有操作,所以我的建议是这些天只使用.sbt文件.

所以请保留project / build.sbt,或者更好地将其重命名为project / plugins.sbt,这样可以减少混淆,并将其用作./build.sbt:

lazy val root = Project("plugins",file("."))
  .dependsOn(uri("../scala-js-resource/plugin"))
  .dependsOn(uri("../scala-js-workbench"))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读