Owe*_*wen 101 git scala build sbt build-dependencies
我听说过(而且我知道我也见过一些例子,只要我能记得哪里)sbt可以从git repo获得依赖.
我希望从github 获得harrah/up的依赖.存储库不提供任何工件JAR文件,只提供设置为使用构建的源树sbt.我想象的过程是sbt下载源代码,构建它,然后将其用作依赖项工件.
我可能想象sbt事实上可以做这样的事情.它可以?如果是这样,怎么样?
Ale*_*ean 98
您可以使用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(...
Run Code Online (Sandbox Code Playgroud)
请注意,如果您有多个依赖于同一外部项目的SBT项目,则值得设置一个中心sbt.boot.directory以避免不必要的重新编译(请参阅此处的说明).
Kip*_*ros 78
确实是的.您可以为运算符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")
}
Run Code Online (Sandbox Code Playgroud)
资料来源: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"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26464 次 |
| 最近记录: |