我一直试图找到有关RootProject和ProjectRef的更多信息,但看起来在sbt文档中根本没有提到它.
据我所知,如果您正在引用根项目,则在引用子项目时应使用RootProject和ProjectRef.然而,目前尚不清楚它们之间的行为将如何不同.有人可以帮忙解释一下吗?
此外,它没有记录,这是否意味着RootProject和ProjectRef不是推荐的引用其他sbt项目的方式?
谢谢.
我正在尝试将sbt-native-packager插件添加到我的sbt构建中.出于多种原因,我不希望我的构建依赖于默认的sbt存储库,我已经阻止了对网络的访问,并通过<project_home>/project/plugins.sbt以下方式向我添加了一个解析器:
resolvers += "local-repo-plugins" at "file:///" + baseDirectory.value + "/libs/repo/"
resolvers += Resolver.url("my-ivy-proxy-plugins", url("http://fullURLForRepo/"))(Patterns("[organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]") )
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.7.4")
Run Code Online (Sandbox Code Playgroud)
我可以确认它在我的常春藤代理中托管的插件,但这甚至不是问题,因为sbt仍在尝试转到默认的repos:
[info] Resolving com.typesafe.sbt#sbt-native-packager;0.7.4 ...
[error] Server access Error: Connection timed out url=https://repo.typesafe.com/typesafe/ivy-releases/com.typesafe.sbt/sbt-native-packager/scala_2.10/sbt_0.13/0.7.4/ivys/ivy.xml
[error] Server access Error: Connection timed out url=https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-native-packager/scala_2.10/sbt_0.13/0.7.4/ivys/ivy.xml
[error] Server access Error: Connection timed out url=https://repo1.maven.org/maven2/com/typesafe/sbt/sbt-native-packager_2.10_0.13/0.7.4/sbt-native-packager-0.7.4.pom
Run Code Online (Sandbox Code Playgroud)
此外,这个非常相同的自定义解析器<project_home>/build.sbt在解析库依赖关系时工作得很好(连同其他几个,包括一个基于本地文件系统的解析器).
虽然我理解为什么我的项目构建中使用的解析器与我使用的解析器不同,但我<project_home>/project/plugins.sbt对我刚才描述的问题有几个问题:
<project_home>/project/plugins.sbt具有该语法的?<project_home>/build.sbt我正在尝试构建一个由多个项目聚合的 Scala 项目,其中之一是 sbt 插件。我想在同一父项目下的另一个子项目中使用这个插件,但我不太明白如何做到这一点。
我的项目根目录中的“build.sbt”是这样的:
lazy val plugin = project
.in(file("sbt-Something"))
.dependsOn(lib)
.settings(common: _*)
.settings(name := "My plugin",
sbtPlugin := true)
lazy val examples = project
.in(file("examples"))
.dependsOn(lib, plugin)
.settings(common: _*)
.settings(name := "Examples")
Run Code Online (Sandbox Code Playgroud)
如何将plugin作为插件添加到项目中examples?
我无法从内部引用对象依赖项plugins.sbt进行编译,从而得到错误error: not found: value Dependencies
/project/plugins.sbt
/project/Dependencies.sbt
Run Code Online (Sandbox Code Playgroud)
Depencies.scala 只是对象的集合
object Dependencies {
object Play {
...
val sbtPlugin = "..."
...
Run Code Online (Sandbox Code Playgroud)
同样,我使用它./build.sbt来添加libraryDependencies没有问题:
lazy val root = (project in file("."))
.enablePlugins(PlayScala)
.settings(libraryDependencies += Seq(
Dependencies.Play.dependencies, ...
Run Code Online (Sandbox Code Playgroud)
感谢您的任何想法,我比什么都更好奇为什么build.sbt可以访问project文件夹资源