我听说过(如果我只记得我在哪里的话,我也已经看过示例)sbt
可以从git repo获取依赖项。
我正在寻找从github 获取依赖项harrah / up。该存储库不提供任何工件JAR文件,仅提供被设置为使用构建的源树sbt
。我想象的过程是sbt
将下载源存储库,进行构建,然后将其用作依赖项。
我可能sbt
在想,实际上可以做这样的事情。它可以?如果是这样,怎么办?
我听说过(如果我只记得我在哪里的话,我也已经看过示例)sbt
可以从git repo获取依赖项。
我正在寻找从github 获取依赖项harrah / up。该存储库不提供任何工件JAR文件,仅提供被设置为使用构建的源树sbt
。我想象的过程是sbt
将下载源存储库,进行构建,然后将其用作依赖项。
我可能sbt
在想,实际上可以做这样的事情。它可以?如果是这样,怎么办?
Answers:
确实是的。您可以给运算符Project
一个依赖项dependsOn
,并且可以通过其URI引用Github项目,例如RootProject(uri("git://github.com/dragos/dupcheck.git"))
。或者,您可以创建git clone
项目,然后使用引用本地副本RootProject(file(...))
。有关详细信息和示例,请参见SBT Wiki上的“完整配置”。
sbt
将如何重新编译它?clean
似乎没有帮助。
#master
,重新加载,将其克隆,则将新提交推送到master,而sbt仍可与最初克隆的存储库一起使用没有注意到新的提交。在这一点上,要么要么将其删除,/.sbt/0.13/staging/
然后再次进行sbt克隆,要么去那里做git pull
您可以使用dependsOn
运算符将未打包的依赖项从GitHub导入到项目中,方法是将它们视为项目依赖项。(这与包含预编译库依赖项的方式不同)。
请注意,您可以使用#
表示法指定要拉出的分支。这是一些对我来说效果很好的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
以避免不必要的重新编译(请参阅此处的说明)。
"my-project"
使用项目根目录中的name := "MyProject"
设置是否可以动态设置build.sbt
?
git://
在play / sbt 13.0中,协议语法似乎对我不起作用。https://
虽然有效。这也可能是由git特定设置引起的。
master
[error] No project 'project_name' in 'ssh://git@github.com/user/project.git#branch'
由于无法解决库的依赖关系(使用建议的方法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/
https uri
版本。
build.sbt
吗?