簡體   English   中英

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

[英]SBT Resolvers work in build.sbt, not working in Build.scala

曾幾何時,在遙遠的土地上,存在一個帶有一個project/build.sbt文件的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.

有一天,又創建了另一個項目。 與第一個項目不同,這個項目project/project/Build.scala大又復雜,所以它有一個project/project/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:\Users\Haoyi\.ivy2\local\org.scala-lang.modules.scalajs\scalajs-sbt-plugin\scala_2.10\sbt_0.13\0.2-SNAPSHOT\ivys\ivy.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像我想要的Build.scala工作?

project/build.sbt 不是小弟project/Build.scala 前者定義了sbt 插件 ,而后者是實際的構建文件。 如果你願意,它的小弟弟將是<root-dir>/build.sbt

您應該將插件定義保留在project/build.sbt 擁有這兩個文件沒有任何問題。

您的項目定義(以及dependsOn )應該在project/Build.scala ,或者您使用<root-dir>/build.sbt /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"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM