如何在build.sbt中配置本地修改后的GitHub克隆依赖库?
如何在SBT项目中使用本地修改后的依赖库?
问题背景
我已经从GitHub克隆了一个库到本地并完成了修改,希望在自己的Scala项目中使用这个本地版本开展测试。当前我的build.sbt配置如下:
name := "Actoverse Demo" version := "1.0" scalaVersion := "2.11.8" libraryDependencies ++= Seq( "com.typesafe.akka" %% "akka-actor" % "2.4.20" ) lazy val root = project.in(file(".")).dependsOn(actoversePlugin) lazy val actoversePlugin = RootProject(file ( " /Users/USERNAME/Desktop/Bo/Actoverse-Scala/src/main/scala/actoverse" ))
请问需要如何调整该配置以启用本地修改后的库版本?
解决方案
你的配置核心问题是路径指向错误:RootProject需要指向本地库的根目录(也就是包含该库自身build.sbt的文件夹),而不是源码包的子目录。按以下步骤调整即可:
修正本地依赖的路径
将actoversePlugin的路径修改为你克隆的Actoverse-Scala库的根目录,而不是里面的src/main/scala/actoverse子文件夹。确认本地库是可独立编译的SBT项目
确保Actoverse-Scala根目录下有它自己的build.sbt文件,能单独用sbt compile编译通过——这是SBT能识别并依赖它的前提。调整后的完整配置
修改后的build.sbt如下:name := "Actoverse Demo" version := "1.0" scalaVersion := "2.11.8" libraryDependencies ++= Seq( "com.typesafe.akka" %% "akka-actor" % "2.4.20" ) // 指向本地克隆库的根目录(包含自身build.sbt) lazy val actoversePlugin = RootProject(file("/Users/USERNAME/Desktop/Bo/Actoverse-Scala")) lazy val root = project.in(file(".")).dependsOn(actoversePlugin)
额外小贴士
- 推荐使用相对路径(如果本地库和你的项目在同一父目录下),比如
file("../Actoverse-Scala"),这样换环境时不用修改路径。 - 当你修改本地库的代码后,只需重新运行
sbt compile或sbt run,SBT会自动检测到依赖的变更,先编译本地库再编译你的项目。 - 如果本地库不是SBT项目(比如只有零散源码),可以通过添加
unmanagedSourceDirectories来引入源码,但更推荐把本地库转为SBT项目,依赖管理会更省心。
内容的提问来源于stack exchange,提问作者f_s
相关产品推荐
相关产品推荐

