我听说过(而且我知道我也看过一些例子,只要我记得在哪里)sbt
可以从 git repo 获取依赖项。
我希望从 github获取依赖项 harrah/up 。该存储库不提供任何工件 JAR 文件,仅提供一个源树,它设置为使用sbt
. 我想象的过程是sbt
下载源代码库,构建它,然后将其用作依赖项。
我可能在想象sbt
实际上可以做这样的事情。它可以?如果是这样,怎么办?
我听说过(而且我知道我也看过一些例子,只要我记得在哪里)sbt
可以从 git repo 获取依赖项。
我希望从 github获取依赖项 harrah/up 。该存储库不提供任何工件 JAR 文件,仅提供一个源树,它设置为使用sbt
. 我想象的过程是sbt
下载源代码库,构建它,然后将其用作依赖项。
我可能在想象sbt
实际上可以做这样的事情。它可以?如果是这样,怎么办?
您可以使用运算符将未打包的依赖项从 GitHub 导入到您的项目中,方法是将它们视为项目依赖dependsOn
项。(这与包含预编译库依赖项的方式不同)。
#
请注意,您可以使用符号指定要提取的分支。这是一些对我来说效果很好的 Scala SBT 代码:
object V {
val depProject = "master"
// Other library versions
}
object Projects {
lazy val depProject = RootProject(uri("git://github.com/me/dep-project.git#%s".format(V.depProject)))
}
// Library dependencies
lazy val myProject = Project("my-project", file("."))
.settings(myProjectSettings: _*)
.dependsOn(Projects.depProject)
.settings(
libraryDependencies ++= Seq(...
请注意,如果您有多个 SBT 项目依赖于同一个外部项目,则值得设置一个中心sbt.boot.directory
以避免不必要的重新编译(请参阅此处的说明)。
确实是的。你可以给你Project
的运营商一个依赖dependsOn
,你可以通过它的 URI 引用一个 Github 项目,例如RootProject(uri("git://github.com/dragos/dupcheck.git"))
. 或者,您可以git clone
项目,然后使用RootProject(file(...))
. 有关详细信息和示例,请参阅SBT wiki 上的“完整配置” 。
由于我在解决我的库的依赖项时遇到了问题(使用建议的RootProject
),我想指出名为ProjectRef
. 因此,如果需要依赖 git 中的库,我建议这样做:
import sbt.Keys._
import sbt._
object MyBuild extends Build {
lazy val root = Project("root", file("."))
.dependsOn(myLibraryinGit)
.settings(
...,
libraryDependencies ++= Seq(...))
lazy val myLibraryinGit = ProjectRef(uri("git://git@github.com:user/repo.git#branch"), "repo-name")
}
来源:http ://blog.xebia.com/git-subproject-compile-time-dependencies-in-sbt/
我想为 sbt 0.13+ 添加一个答案。只需将这样的内容放入您build.sbt
的项目根文件夹(不是Build.scala
):
lazy val root = (project in file(".")).dependsOn(playJongo)
lazy val playJongo = RootProject(uri("https://github.com/bekce/play-jongo.git"))