![](/img/trans.png)
[英]Configuring Coffeescript SBT in Build.scala not build.sbt?
[英]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.